CSE 250A Algorithms and Data Structures Spring 2004

University at Buffalo
Department of Computer Science & Engineering
201 Bell Hall -- (716) 645-3180

 
Syllabus

Read this sheet carefully, and save it for future reference.

Instructor

Name:
Carl Alphonce
Office:
219 Bell
Phone:
645-3180x115
E-Mail:
cse-250-alphonce@cse.buffalo.edu
Office hours:
To be determined.

Course information

Credit hours:
4
Lecture time & room:
TTh 12:30-1:50 in NSC 216

Recitation times:

250 A1:
W 3:00-3:50 in 19 Clemens
250 A2:
F 1:00-1:50 in 257 Capen
250 A3:
Th 11:00-11:50 in 210 Norton

WWW:
http://www.cse.buffalo.edu/faculty/alphonce/Courses/Spring2004/cse250/

Course description

This course provides a rigorous introduction to the analysis of algorithms and data structures. Topics include but are not limited to, asymptotic notations $(O, o, \Theta, \Omega)$, algorithmic strategies, and time-space analysis and trade-offs in various sorting algorithms, as well as list and tree traversal algorithms, hashing and graph algorithms. The importance of choosing appropriate data structures when solving a problem will be illustrated by programming projects. While instruction in a specific programming language is not a main topic of this course, the course does require that you become reasonably fluent in C++. There is no expectation that you have C++ programming background prior to this course, though I will assume that you are familiar with basic object-oriented concepts. A detailed schedule of topics is maintained and updated on the course web site.

This course is a prerequisite for CSE 305 Introduction to Programming Languages, CSE 396 Introduction to the Theory of Computation, CSE 431 Algorithms Analysis and Design, CSE 474 Introduction to Machine Learning and CSE 480 Computer Graphics.

Course objectives

At the end of this course you should be able to perform basic analysis of algorithms, understand how various data structures and algorithms function, be able to implement them in a high-level language, and be able to pick an appropriate data structure or algorithm for a given task. You will also understand some theoretical limitations on sorting algorithms.

Prerequisites

You must have passed each of CSE 116, CSE 191 (or MTH 191) and MTH 142 with a grade of C- or better in order to take CSE 250A. Your prerequisites will be checked. If you do not have the required prerequisites, you will be removed from the course.

Textbook and Materials

The required textbooks for this course are:

Though you may find the following books useful, they are not required and have not been ordered for the bookstore:

Additional reading material may be assigned during the course, and will be announced in lecture.

Computing Resources

You will be provided with a CSE undergraduate computing account. You may use the lab facilities in Bell 338. This lab is available for use 24 hours per day, 7 days a week. It is on card-access - use your UB card to open the door. For your own safety, and to protect the equipment in the lab, do not open or hold the door open in order to allow other people to gain entry to the lab. All students who are authorized to use the lab will be granted card access. You can connect to yeager.cse.buffalo.edu remotely from other sites, on or off campus.

You are expected to become proficient at using the machines in the lab, the Unix system, the C++ compiler, and whatever other software development tools the course requires you to use. It is your responsibility to ensure that any programs you write for this course compile using the C++ compilers installed on the department's machines.

You are also required to read mail sent to your CSE e-mail account. Any e-mail communication that you send regarding this course must be sent from your CSE e-mail account or your UB e-mail account. Under no circumstances will e-mail from non-UB accounts be acknowledged or answered. You must include an informative subject line in all e-mail, and include your full name in any e-mail correspondence.

All e-mail that we send in reply to your e-mail will be sent to the address from which you sent your e-mail. Our feedback on materials you hand in electronically will be sent to your CSE e-mail account only. Since you may request re-grades of work only within a set period from the time that the feedback was provided to you, it is in your best interest to read your CSE e-mail account on a daily basis.

Course organization

The course has both a lecture component and a recitation (lab) component. Each component plays a role in helping you achieve the objectives of the course. If you do not participate fully in both you should not expect to do well in the course.

Lectures

The conceptual and theoretical course content will be delivered primarily in the lectures, complemented by readings from the text books. You must review readings prior to attending a lecture, and you are expected to review the readings again, along with any notes you took, after the lecture.

Some of the topics will be difficult. It is therefore absolutely essential that you ask questions whenever something is said which you do not understand.

You are expected to attend all lectures. If you are unable to attend a lecture because of sickness or similar reasons, make sure you get the notes from a classmate. If you are out of class for an extended period of time because of sickness, notify your instructor as soon as possible, and see your instructor immediately upon your return in order to determine how to catch up. If you have missed a significant portion of the semester due to illness, it is recommended that you resign from the course.

Recitations

The recitations review and extend lecture material and are an excellent forum for asking more individual questions about the course material than can typically be addressed in lecture. Some material needed to do the programming projects may be covered only in recitation. Homeworks are collected and returned in recitation. Quizzes are returned in recitation. Attendance in recitation is expected.

Recitations do not meet in the first week of classes. Recitations meet for the first time the week of the 01/19 - 01/23.

Course evaluation

The following indicates the grade breakdown which I will use in assigning grades in the course. I reserve the right to make small adjustments to the breakdown if I feel it is necessary.

Exam component (45% of final course grade)

There will be two in-class examinations, together with a final examination at the end of the term. The in-class exams will be held on February 17 and March 23. The final examination will be given on a date to be specified by the University. Do not make travel plans for times during the examination period until the final examination schedule has been posted.

If you miss an examination because of sickness or similar reasons, visit a physician and obtain a note detailing the period during which you were medically incapable of taking the exam. Notify your instructor immediately via e-mail or telephone (voice mail) if you are going to miss an exam, before the exam takes place unless medically impossible. See your instructor as soon as you return to class.

If you miss an examination without a valid excuse, you will receive a zero grade for that examination. No make-up examination will be available without a valid excuse.

There are two options for calculating your score for the exam component of the course. Under the first option each in-class exam counts for 15% of your grade, while the final exam counts for 15%. Under the second option the final exam counts for 45% of your grade. The option which gives you the highest score in the course will be used automatically.

You must attempt the in-class exams in order for the final-exam only option to be available to you. If you do not write the in-class exams, you cannot make use of the final-exam only option.

The motivation for having two grading options available is to ensure that you are not penalized if you had a rough start in the course, but managed to do really well on the final exam. If you do poorly on the midterm exam, you can still do well in the course by demonstrating that you have learned the material on the final exam. Of course, if you do poorly on the midterm exam, this means you are playing without a safety net.

The following table summarizes the grading of the exam component of the course:

  Option #1 Option #2
1$^{st}$ in-class exam 15% -
2$^{nd}$ in-class exam 15% -
final exam (cumulative) 15% 45%

A necessary but not sufficient condition for receiving a passing grade in the course is having a passing exam component grade. In order to receive a passing grade in the course, you must have a passing exam component grade. In other words, the following must hold in order for you to receive a passing grade in the course:

\begin{displaymath}max(\ \frac{\mbox{exam \char93 1 \%}
\ +\ \mbox{exam \char93...
... \mbox{final exam \%}}{3}\ ,\ \mbox{final
exam \%}\ ) \ge 50.0 \end{displaymath}

Quiz/homework component (10% of final course grade)

There will be regular quizzes. The main purpose of these quizzes is to give you feedback on your understanding of the material covered in lecture. Missed quizzes cannot be made up under any circumstances. Your lowest quiz grade will be dropped from final course grade calculations. All quizzes will count equally.

Homework assignments may be given from time to time throughout the semester. These are due in and handed back in recitation. Late submissions of homework assignments will not be accepted under any circumstances. Your lowest homework grade will be dropped from final course grade calculations. All homeworks will count equally.

The exact breakdown between quizzes and homeworks will depend on how many homeworks are given during the course of the semester. As a rough guide you may assume that a homework will count for as much as two quizzes.

Project component (45% of final course grade)

There will be regular programming projects. The purpose of these is to reinforce and deepen your understanding of the broader concepts discussed in class through application of those concepts to concrete problems. The programming projects are designed to give you hands-on experience analyzing problems, developing solutions to them, and implementing these solutions in C++. The programming projects also serve to give you feedback on your understanding of the material.

I expect that we will have one short introductory programming project and four longer ones.

The short project is designed to familiarize you with the C++ language, the software development tools and the computing environment that you will be using. This initial project will be worth 5% of your overall course grade.

There will be four longer projects, each worth 10% of your overall course grade.

It is your responsibility to ensured that any programs you write for this course compile/interpret and run using the language resources available on the departmental systems. Submissions which do not compile will not be graded.

Early policy for programming project submissions

Any programming project submission which occurs before the due date is considered early, and will have a 4% bonus (of the maximum score obtainable) added per full day early (24 hours), up to a maximum of 8%.

Late policy for programming project submissions

Any programming project submission which occurs after the due date is considered late, and will have a 20% penalty (of the maximum score obtainable) imposed per day (24 hours), or portion thereof, late. A submission more than four days late (i.e. five or more days late) will therefore be awarded no points.

When calculating final course grades, I will ``forgive'' two days of programming project late penalties. I will ``forgive'' the two late penalties which affect your grade the most. For example, if all of your submissions except one are on time, and the late submissions is two days late, it counts for full credit. As another example, if the late submissions is three days late, but all your other submissions are on time, the late submission counts as one day late. Unused late days do not benefit you.

Regrading

If you have a question about the grading of any piece of work, first consult with the teaching assistant who graded your work. If you cannot resolve your questions with the teaching assistant, you should consult with the instructor of the course.

Any questions about the grading of a piece of work must be raised within one week of the date that the work was returned by the teaching assistant or the instructor. In other words, if you do not pick up your work in a timely fashion, you may forfeit your right to question the grading of your work.

Incomplete (I) grades

We will follow the UB Undergraduate Catalog Statement on Incomplete Grades, found in the Undergraduate Catalog.

Generally, incomplete (``I'') grades are not given. However, very rarely, circumstances truly beyond a student's control prevents him or her from completing work in the course. In such cases the instructor can give a grade of ``I''. The student will be given instructions and a deadline for completing the work, usually no more than 30 days past the end of the semester. University and department policy dictate that ``I'' grades can be given only if the following conditions are met:

Incompletes can not be given as a shelter from poor grades. It is your responsibility to make a timely resignation from the course if you are doing poorly for any reason. The last day to resign the course is Friday, March 5, 2004.

Letter grades

The following table indicates the number to letter grade mapping I will use to assign final grades at the end of the course. The Grade points column is included for your convenience only, and is not official information. The official mapping can be found on in the Undergraduate Catalog.

Percentage score Letter grade Grade points
90-100 A 4.0
85-89 A- 3.67
80-84 B+ 3.33
75-79 B 3.0
70-74 B- 2.67
65-69 C+ 2.33
60-64 C 2.0
55-59 C- 1.67
50-54 D 1.0
0-49 F 0.0

Newsgroup

There is a newsgroup, sunyab.cse.250, for this course. You must learn how to read news and subscribe to this newsgroup. You are expected to read the newsgroup on a daily basis. There will often be important material posted there, such as supplementary course notes, homework and sample exam questions, and occasionally late breaking news. You may post general course related articles to the newsgroup. Use discretion in posting articles related to homework assignments: when in doubt, e-mail the T.A. or instructor first.

General Notes

If you don't understand something covered in class, ask about it right away. The only silly question is the one which is not asked. If you get a poor mark on an assignment, quiz, or exam, find out why right away. Don't wait a month before asking. The instructor and teaching assistants are available to answer your questions. Don't be afraid to ask questions, or to approach the instructor or T.A. in class, during office hours, in the hallways, or through e-mail.

This course is intended to be hard work, but it is also intended to be fun. Play with the computer, and have fun with the neat and elegant programming ideas covered in this course. We think computer science is interesting and exciting, and we want to convince you of this. Work hard, but have fun!

Disabilities

If you have a diagnosed disability (physical, learning, or psychological) that will make it difficult for you to carry out the course work as outlined, or that requires accommodations such as recruiting note-takers, readers, or extended time on exams or assignments, you must consult with the Office of Disability Services (25 Capen Hall, Tel: 645-2608, TTY: 645-2616, Fax: 645-3116, http://www.student-affairs.buffalo.edu/ods/). You must advise your instructor during the first two weeks of the course so that we may review possible arrangements for reasonable accommodations.

Counseling Center

Your attention is called to the Counseling Center (645-2720), 120 Richmond Quad. The Counseling Center staff are trained to help you deal with a wide range of issues, including how to study effectively and how to deal with exam-related stress. Services are free and confidential. Their web site is http://www.student-affairs.buffalo.edu/shs/ccenter/

Distractions In The Classroom - Behavioral Expectations

The following is the text of a policy adopted by the Faculty Senate on 5/2/2000. You are expected to know and adhere to this policy.

OBSTRUCTION OR DISRUPTION IN THE CLASSROOM - POLICIES

UNIVERSITY AT BUFFALO

To prevent and respond to distracting behavior faculty should clarify standards for the conduct of class, either in the syllabus, or by referencing the expectations cited in the Student Conduct Regulations. Classroom "etiquette" expectations should include:

Academic Integrity

Source: http://www.cse.buffalo.edu/academics-academic_integrity.shtml

The academic degrees and the research findings produced by our Department are worth no more than the integrity of the process by which they are gained. If we do not maintain reliably high standards of ethics and integrity in our work and our relationships, we have nothing of value to offer one another or to offer the larger community outside this Department, whether potential employers or fellow scholars.

For this reason, the principles of Academic Integrity have priority over every other consideration in every aspect of our departmental life, and we will defend these principles vigorously. It is essential that every student be fully aware of these principles, what the procedures are by which possible violations are investigated and adjudicated, and what the punishments for these violations are. Wherever they are suspected, potential violations will be investigated and determinations of fact sought. In short, breaches of Academic Integrity will not be tolerated.

Departmental Statement on Academic Integrity in Coding Assignments and Projects

The following statement further describes the specific application of these general principles to a common context in the CSE Department environment, the production of source code for project and homework assignments. It should be thoroughly understood before undertaking any cooperative activities or using any other sources in such contexts.

All academic work must be your own. Plagiarism, defined as copying or receiving materials from a source or sources and submitting this material as one's own without acknowledging the particular debts to the source (quotations, paraphrases, basic ideas), or otherwise representing the work of another as one's own, is never allowed. Collaboration, usually evidenced by unjustifiable similarity, is never permitted in individual assignments. Any submitted academic work may be subject to screening by software programs designed to detect evidence of plagiarism or collaboration.

It is your responsibility to maintain the security of your computer accounts and your written work. Do not share passwords with anyone, nor write your password down where it may be seen by others. Do not change permissions to allow others to read your course directories and files. Do not walk away from a workstation without logging out. These are your responsibilities. In groups that collaborate inappropriately, it may be impossible to determine who has offered work to others in the group, who has received work, and who may have inadvertently made their work available to the others by failure to maintain adequate personal security In such cases, all will be held equally liable.

These policies and interpretations may be augmented by individual instructors for their courses. Always check the handouts and web pages of your course and section for additional guidelines.

Departmental Policy on Violations of Academic Integrity

Any student accused of a violation of academic integrity will be so notified by the course director. An informal review will be conducted, including a meeting between these parties. After this review and upon determination that a violation has occurred, the following sanctions will be imposed. It is the policy of this department that, in general, any violation of academic integrity will result in an F for the course, that all departmental financial support including teaching assistantship, research assistantship or scholarships be terminated, that notification of this action be placed in the student's confidential departmental record, and that the student be permanently ineligible for future departmental financial support. A second violation of academic integrity will cause the department to seek permanent dismissal from the major and bar from enrollment in any departmental courses. Especially flagrant violations will be considered under formal review proceedings, which may in addition to the above sanctions result in expulsion from the University.


CSE 250A Algorithms and Data Structures Spring 2004


University at Buffalo
Department of Computer Science & Engineering


I, (PRINT name), acknowledge that I have read and understood the syllabus for this course, CSE 250A Algorithms and Data Structures.


I also acknowledge that I understand the definition of academic integrity as outlined in the syllabus, and that I will minimally receive a grade of F in the course if I am found to have breached academic integrity.


I also understand that I am required to have successfully completed all of the listed prerequisites for this course with a minimum grade of C-. I understand that if I do not meet the prerequisites that I may be dropped from the course by the department.

Signature:

Date:


Please fill in the following table:

Course Where did you take it? When did you take it? What was your grade?
Number (Name of institution) (Semester & Year) (A, A-, ..., F)
CSE 116
Intro. to CS 2
CSE/MTH 191
Discrete Math
CSE 142
Calculus 2


About this document ...

This document was generated using the LaTeX2HTML translator Version 2002-2 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 Syllabus.tex

The translation was initiated by Carl G. Alphonce on 2004-01-11


Carl G. Alphonce 2004-01-11