COSC2100/COSC2010: Data Structures and Algorithms I


Course Objectives

This course introduces students to the basic data structures, and the analysis and design of basic algorithms. Data structures and types covered include: stacks, queues, lists, trees, graphs, and hash tables, and algorithms covered include recursion, sorting, and selection. Upon successful completion of this course, students will be able to do the following:
  1. Demonstrate the familiarity with basic data structures and sorting algorithms.
  2. Describe basic data structures, implement and apply them.
  3. Analyze the asymptotic performance of algorithms.
  4. Implement, analyze, and apply basic  sorting and searching algorithms.
General Info

    Meeting hours: MW 2:00 - 3:15PM

    Meeting place: Cudahy Hall 114

    Instructor: Rong Ge

    Office hours: MW 9:30 - 11:00AM  at CU320 or by appointment through email  rong dot ge at marquette dot edu or phone call (414)288-6344


  1. Object-Oriented Data Structures Using Java, 3rd edition. Jones & Bartlett Learning, 2012. ISBN: 9781449613549. [Required]   

Course Website


COSC 1010 or EECE1610; knowledge of JAVA
COSC1020, and MATH2100, which can be concurrently taken.

Computing Environments

This course teaches the basic techniques for analyzing and designing data structures and algorithms that apply to all programming languages. In practice, JAVA is adopted for algorithm implementation in this course. While students are free to use any integrated development environment for programming assignments, they are encouraged to use Eclipse, which is installed on computers at CU310 and CU101. If a student would like to use his/her own computer for assignments, he/she takes the full responsibility to build and maintain the environment.


Students will read each chapter of the textbook. Corresponding quiz assignments will be posted on D2L and are due at noon on the day the chapter is introduced.

Programming assignments will be given during the semester. Assignment problems are designed to reinforce the understanding of the course material through practice, and prepare students for tackling real-world problems. They are also helpful for preparing the exams. The assignments and due dates will be posted on the schedule at the course website.

There will be a detailed description for each programming problem. Students are supposed to generate test cases and test the programs themselves. The source codes will be submitted through turnin system. Late assignments within a certain period will be accepted but with penalties.


Two in-class midterm exams and one final exam are scheduled for this course. The dates for the midterms are tentative.

Midterm exam I: Sept. 29

Midterm exam II: Nov. 3

Final exam: Dec. 10, Wednesday 1:00-3:00PM


Attendance -- 5%

Quiz -- 10%

Assignment -- 50%

Midterm exam I -- 10%

Midterm exam II -- 10%

Final exam -- 15%


A 92 and above
AB 86-91
B 80-85
BC 74-79
C 68-73
CD 62-67
D 56-61
F 55 and below

A grading error should be brought to the instructor's attention within one week after grades are posted.
Students must pass BOTH the exam portion of the grade AND the homework assignment portion of the grade to pass the course overall.

Course Policies

  1. Students are responsible for checking the course website for announcements, assignments and due dates, and lecture notes.
  2. Attendance will be taken every class. Each student is allowed a total of three excused absences without losing attendance points in this course. More than three excused absences are treated as unexcused. The first unexcused absence results in a loss of one point, and the second/third unexcused absence results in a loss of two points. Student exceeding six excused absences or three unexcused absences may be Withdrawn for Excessive Absences (WA) by the deadline of 11/14/2014.
  3. Late Assignments: 10% penalty for 1-2 days late; 25% penalty for 3-4 days late; 40% penalty for 5 days late. After 5 days no submissions will be accepted. Note weekends count.
  4. There will be both individual and team assignments. Each student should write the codes and solutions by herself/himself  for individual assignments, and may not share source code with others. Plagiarism will result in a score of zero on the assignment or exam, and/or dismissed from the course. Review the Academic honesty code for details.
  5. It is acceptable to discuss with classmates a programming assignment in a general way, i.e., to discuss the nature of the assignment. Students may help (and get help) with debugging.
  6. Debugging is part of the programming assignment. If help from the instructor for debugging is really needed as the last resort, go to the instructor's office hours or make an appointment. Do not send source codes in emails.
  7. Exams must be taken on the hour that are scheduled. They can be rescheduled for individuals only if documented evidence of medical or family emergency is presented before the time of the exam.