Skip to content

COSC 2320 Data Structures - Fall 2016 (Aleman-Meza)

License

Notifications You must be signed in to change notification settings

uhcs2320/syllabus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Structures Syllabus (Fall 2016)

  • Course COSC-2320 Computer Science Department, University of Houston
  • Instructor: Boanerges Aleman-Meza, bam AT nsm.uh.edu
  • Office Hours:
    • Tuesday, Thursday:
      • 1 - 1:30pm (127 Fleming)
      • 2:00-2:30pm (Fleming 127)
    • Wednesday 11:00-11:30am (PGH 376)
    • By appointment.
  • TA Office Hours: Daha Fatima Zohra, daha.fatimazohra@gmail.com
    • Wednesday 10:30am-11:30am (PGH 376)
    • Thursday 2:30p.m-3:30p.m (PGH 550E)
  • Lab office hours:
    • Wednesday 10:30am-11:30am (PGH 376)
  • TA Office Hours: Cristina M. Morales Mojica, c3m.cmm@gmail.com
    • TBA

The information contained in this class syllabus is subject to change without notice. Students are expected to be aware of any additional course policies presented by the instructor during the course.

Learning Objectives: Students will gain a good understanding of both theory and programming of fundamental data structures and algorithms. This course will provide a foundation for more advanced courses in computer science. Students will learn how data structures help in solving many problems in all areas in computer science, including compilers, database systems and operating systems. Students will understand how to derive a function that quantifies the efficiency of an algorithm, and will be able to understand how to analytically prove that a program works correctly. Finally, students will become experienced C++ programmers, understanding how to develop correct and robust code and how to test it.

Major Assignments/Exams:

This is a course that gives more weight to homeworks. Grading is as follows:

  • 70%: 7 programming assignments (each is worth 10%)
  • 30%: midterm.

Programming assignments are a fundamental component of learning for this course. Every programming assignment must be turned in to get a grade of B- or higher. Programs will be developed in C++ and tested with the GNU C++ compiler. Programming assignments are strictly individual. The TAs will post sample test cases, but the programs will be tested with similar test cases (not the same input files). The programs are thoroughly tested by the TAs to verify that every requirement of the assignment was implemented. The programs are graded on a 0-100 scale, and there is a severe penalty for each encountered error. A non-submitted program grade is ZERO. A non-working program (i.e., compiles, but does not run) grade is 6. A program with many errors typically reaches 40. Only fully functional programs can be expected to receive 80 or higher.

Required Reading: Malik, D.S. Data Structures Using C++. Course Technology, 2nd edition, 2010.

Recommended Reading: Any CS book on C++ and discrete mathematics are helpful for additional reference. A good reference for the theory part is the following book: Aho, J.E. Hopcroft, and J.D. Ullman. Data Structures and Algorithms. Addison/Wesley, Redwood City, California, 2nd edition, 1983.

Recommended Viewing:

  • Sites such as YouTube have a variety of tutorials for most of the topics covered in class.
  • ICS Videos

List of discussion/lecture topics:

  1. Basics of C++: pointers, arrays, parameter passing, class encapsulation, inheritance, methods, function overloading, Input/Output
  2. Abstract Data Types, and Object Oriented Programming
  3. Linked lists, queues
  4. Stacks, recursion
  5. Trees, balanced trees, multi-way search trees
  6. Hashing functions and hash tables
  7. Sorting and search algorithms: selection sort, heap sort, quick sort, shell sort, merge sort, linear and binary search, hash-based search.
  8. Graphs, graph traversal, search, path problems, transitive closure

Theory covered in the course:

  1. Time complexity analysis
  2. Algorithm design techniques
  3. Recursive functions
  4. Proving algorithm correctness

Miscellaneous

  • We will use Issues in GitHub for class communications
  • Occasionally there is extra credit such as implementing an additional feature in a programming assignment.
  • Programming assignments are graded based on whether your program fully works as expected.
    • If a program is supposed to do 4 things of equal difficulty, and a program correctly implements only 3 of them, then the grade will not be higher than 75/100
    • The programs are evaluated with a set of test cases where each test case may have different weight. If one test case is worth, say 10 points, and a program fails such test case, then there are zero points for that test case.
    • Students may discuss course material and homeworks but must be aware of the difference between collaborating for understanding the material (or homework assignment's requirements), and collaborating on the programming assignment itself (which is not allowed).
    • Honor code: Students are expected to uphold the University of Houston Honor Code.
  • Attendance is not required but it will be taken occasionally for these two purposes:
      1. To have a better chance of remembering a student when asked for a letter of recommendation
      1. To have a record just in case of receiving an official request about when a student stopped showing up to class (such as from Financial Aid office).
  • Extensions on programming assignment deadlines may be given but only when there are official University-wide delays, or there are situations out of control by all students.
  • Failing homework #0 (that is, grade below 60) is a clear suggestion that the student drops the class. In case that a student fails homework #0 and decides to continue with the class, then the student is required to talk with an academic advisor about such decision because not doing well in homework #0 likely indicates that the student needs to have improve on the prerequisites for this course.
  • Any lack of politeness or lack of professional behaviour to other students, instructor, or TAs will not be tolerated. The student with a bad behaviour will be asked to discuss their situation with the relevant University personnel that is experienced in such matters. The minimum outcome will be an email notification to the student of their unprofessional behaviour, with copy to the academic and/or undergraduate advisor (of the Department).
  • It will be extremely unlikely to have re-grading options for programming assignments.
  • The inability to use the Liux server where the programming assignments are to be placed, is not an excuse for re-grading or asking for deadline extensions.
  • Policy on grades of I: Incomplete. A grade of Incomplete may be given only under special cases such as medical emergencies. Students will not be given an Incomplete grade for missing turning in their programming assignments or missing the midterm.
  • Students with disabilities: Any student with a documented disability needing accommodations must speak with the instructor during the first two weeks of class. All discussions will remain confidential. Please remember that the Center for Students with Disabilities has specialists that can help both the student and instructor(s) to help the student to fully participate in class.

Missed class? This is what is covered each week:

  1. Syllabus, homework 0, chapter 1 of the book (algorithm analysis).
  2. Review C++ classes, chapter 2.

Fun stuff