CS 2401 Elementary Data Structures and Algorithms
Spring 2011 Syllabus

Class Meetings: Lecture sections

You should be enrolled in one lab section. You must attend the lecture section and the lab section that you are enrolled in; do not drop in on another lab section without prior approval.

NOTE: The next computer science class CS 2402 (Data Structures) has two prerequisites: CS2401 and MATH 2300 (Discrete Math). To avoid delaying your progress through the program, if you are not currently taking MATH 2300 and have not already passed it, you should seriously consider adjusting your schedule.


Teaching Assistants (TAs):

Peer Leaders:

Course Objectives: This is the second course for students majoring in Computer Science. Students will learn about fundamental computing algorithms, including searching and sorting; elementary abstract data types including linked lists, stacks, queues and trees; and elementary algorithm analysis. Prerequisite: CS 1401, with a grade of C or better.

Knowledge and Abilities Required Before the Students Enter the Course: Students are assumed to be comfortable programming in Java. Students should be able to code basic arithmetic expressions, define simple classes, use strings, code loops and conditional statements, write methods, create objects from classes, invoke methods on an object, perform basic text file input and output, and use arrays.

Learning Outcomes
Level 3: Synthesis and Evaluation:
Level 3 outcomes are those in which the student can apply the material in new situations. This is the highest level of mastery. On successful completion of this course, students will be able to identify, implement and use the following data structures as appropriate for a given problem:

Level 2: Application and Analysis:
Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details. Upon successful completion of this course, students will be able to:

Level 1: Knowledge and Comprehension
Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. On successful completion of this course, students will be able to:

Textbook: Reading and laboratory assignments will be drawn from Data Structures and Problem Solving using Java by M. A. Weiss. If necessary, this book is available at the bookstore and through major online book retailers, and you are expected to acquire a copy for your use in this course. Photocopied textbooks are illegal and their use will not be tolerated.

Software: Software used in this course will be available on the Windows computers in the main lab (room 300) and in the two instructional labs (rooms 301 and 319). For those who wish to use the course software on your home computer, instructions will be given in the labs.

Assignments: Reading and homework assignments will be handed out or announced in class and in labs. If you miss a class or lab session, it is your responsibility to find out what you missed. You should expect to spend at least 8 hours/week outside of class and lab on reading and homework.

Grading: Your semester grade will be based on a combination of homework and lab assignments, weekly quizzes, lab attendance, exams, and a final exam. The approximate percentages are as follows:

Each of these is explained in more detail below.

Homework and Lab Assignments: Homework and lab assignments are designed to allow you to practice using the concepts presented in lecture and in your reading. Homework and lab assignments may include written problems, tutorial exercises, and programming problems. Assignments usually will be due at the start of your lab session. Late homework will be accepted only in unusual circumstances, by prior arrangement if at all possible.

Homework must be done individually. While you may discuss the problem in general terms with other people, your answers and your code should be written and tested by you alone. Do not exchange programs or let someone look at your code, even "just so they can see how you did it." If you need help, consult a TA, a peer leader, or a professors

Laboratory Sessions: Laboratory sessions are designed to give you guidance in getting your homework assignment started well. In a typical lab session, the Teaching Assistant will present additional material that will help you complete the assignment and answer your questions as you begin work.

You are required to sign up for and attend one of the lab sections associated with this course. Each lab section meets two or three times a week for a total of 3 hours per week. Attendance will be taken. To earn full credit for attendance, you must show up on time, stay for the entire session, and work only on your assignment. You may be excused from lab with full credit if your work has been completed and turned in.

In addition to turning in your lab assignment, you must schedule a one-on-one lab demo session with your TA in which you will explain how your program works and he/she will ask questions to test your understanding of the program being submitted. The TA will then assign a pass/fail grade for this session; a student receiving a failing grade in this session will receive a grade of zero for the lab assignment. NOTE: The lab demo should be presented before or on the deadline for the assignment.

Late Projects: Lab projects up to a week late will receive up to 70% percent of full credit, from one to two weeks late, up to 50%, and more than two weeks late will receive no credit. NOTE: The turn-in-date for labs is not when you e-mail the code, but the date when you demo the lab.

Guidelines for grading labs are listed here.

You must score 60% or better on the lab assignments to pass this course.

Quizzes: The purpose of a quiz is to ensure that you have read the weekly reading assignment and to verify that you have mastered the major concepts of recent lectures. Quizzes typically will be about 5-15 minutes in length and will cover the material assigned to be read for the upcoming lecture plus selected concepts from previous lectures. There will be no make-up on missed quizzes.

Exams: The purpose of the exams is to allow you to demonstrate mastery of course concepts. Each exam will focus on the material from the previous three or four weeks. Exams will take place during the regular class session. There will be three exams, each contributing 10% to your final grade, or 30% total to the overall course grade.

Because the exams contribute so heavily to your total grade, it is vital that you do well on them. If you have test-taking difficulties in general, or if you have difficulties with our tests in particular, please come talk to us as soon as possible (and certainly before the first exam).

Exams are planned for the following dates (subject to change):

  1. Wednesday, February 16 or Thursday, February 17 (Week 5)
  2. Tuesday, March 29 or Wednesday, March 30 (Week 10)
  3. Wednesday, April 27 or Thursday, April 28 (Week 14)
Make-up exams will be given only in extremely unusual circumstances. If you must miss an exam, please meet with an instructor, BEFORE the exam if at all possible.

Final Exam: The final exam will be comprehensive and will count 25% toward your course grade. If you cannot demonstrate your understanding of the concepts and skills needed for success in CS 2402, you cannot pass this course even if you have enough points to do so.

You must take the final exam during the time shown in the schedule for the class section that you are formally enrolled in. Do not simply "drop in" to the other section; there will not be a copy of the exam for you. This is University policy. If you have a scheduling conflict (e.g., if you are taking a final at EPCC) or if you are scheduled for three final exams in one day, see one of the instructors IN ADVANCE.

Grading: The nominal percentage-score-to-letter-grade conversion is as follows:

We reserve the right to adjust these criteria downward, e.g., so that 88% or higher represents an A, based on overall class performance. The criteria will not be adjusted upward, however. You must earn a C or better to continue to the next course in this sequence.

Standards of Conduct: You are expected to conduct yourself in a professional and courteous manner, as prescribed by the UTEP Standards of Conduct.

Graded work, e.g., homework and tests, is to be completed independently and should be unmistakably your own work (or, in the case of group work, your team's work), although you may discuss your project with other students in a general way. You may not represent as your own work material that is transcribed or copied from another person, book, or any other source, e.g., a web page.

Academic dishonesty includes but is not limited to cheating, plagiarism and collusion.

Professors are required to -- and will -- report academic dishonesty and any other violation of the Standards of Conduct to the Dean of Students.

Disabilities: If you feel that you may have a disability that requires accommodation, contact the Disabled Student Services Office at 747-5184, go to Room 106E Union, or email dss@utep.edu

Weekly Schedule: (tentative and subject to change) When learning a new topic, often, we will see how it relates to the previously learned topics and thus, we will use this as an opportunity to recall the previous topics

  1. Reading: Section 2.4, Arrays
  2. Reading: Chapter 2.4, Arrays
  3. Reading: Chapter 5, Algorithm Analysis
  4. Reading: Sections 6.1, 6.5-6.6, ADT, Lists, Stacks, and Queues
  5. Reading: no specific reading
  6. Reading: Chapter 7, Recursion
  7. Reading: Chapter 7, Recursion
  8. Reading: Chapter 8, Sorting
  9. Reading: Chapter 11, Stacks and Compilers
  10. Reading: no specific reading
  11. Reading: Chapter 16, Stacks and Queues
  12. Reading: Sections 19.1-19.4, Binary Search Trees
  13. Reading: Chapter 21, Heaps and heapsort
  14. Reading: Sections 20.1-20.2, 20.6, Hash Tables
  15. Reading: no specific reading