190 likes | 278 Views
Student Projects in the Course Data Structures. Hristina Mihajloska. Outline. About the course Data Structures Student Projects in Java Gains and Conclusion. About the course Data Structures. Big team for a large number of students Lectures Ana Madevska-Bogdanova Anastas Mishev
E N D
Student Projects in the Course Data Structures Hristina Mihajloska
Outline • About the course Data Structures • Student Projects in Java • Gains and Conclusion
About the course Data Structures • Big team for a large number of students • Lectures • Ana Madevska-Bogdanova • Anastas Mishev • Auditory exercises • Boro Jakimovski • Magdalena Kostoska • Laboratory exercises • Hristina Mihajloska • Panche Ribarski
About the course Data Structures • Weekly schedule: • 2 hours – lectures • 3 hours – auditory exercises • 3 hours – laboratory exercises (in computer laboratory) • Practice: • laboratory groups up to 20 students • Projects: • two compulsorily practical single-handed projects
Assumed Background • Student has taken the course Object-oriented Programming • Knowledgeable about • Java language basics • Object-oriented design • Recursion
Grading Information • Two theory exams: 30% • Two practical exams: 30% • Assignments: 20% • Projects: 20% • Class participation: 5% (bonus)
Course Objectives • Learning some of the common data structures • Different ways for their implementation • Ability for analyzing the complexity of algorithms which use data structures • Using data structures for solving practical problems
Course Topics • Algorithm complexity • Fundamental Data Structures • Abstract Data Types • Stacks and Queues • Hash Tables • Trees • Priority queues and Heaps • Sorting • Search trees
Course Difficulties • Student perspective • practical exams much harder then weekly assignments
Course Difficulties • Teacher perspective • few of the students could pass practical exams • Solution • Implementing single-handed student project one week before every practical exam (during course semester)
Student Projects • Goals • good preparation for practical exam • to improve analytical reasoning and programming skills • to distinguish which data structure to be used in practical problem
Student Projects • For every project exists three levels of complexity which are graded differently • Students are asked to choose one of them and find a solution in given time • no points for programs that do not compile
Student Projects • First level (easiest) • Identification of the data structure in the practical problem • It is obvious • Second level (middle) • Students have to combine two data structures to solve the problem • Third level (hardest) • To build a new data structure which is combination of data structures covered by the material • To implement it in a different way
Examples • Third-level project • Write an implementation for data structure Bag as a Java class, which is similar to a set, but it may contain several instances of the same member. For example, {'to', 'be', 'or', 'not', 'to', 'be'} is a bag of words, which is equal to {'be', 'be', 'not', 'or', 'to', 'to'} (since order of members is insignificant), but is unequal to {'be', 'not', 'or', 'to'} (since the number of instances is significant). Adding (removing) a member increases (decreases) the number of instances in the bag by one. The member is deleted from the bag when it has no instances . . .
Examples • Third-level project . . . • Design a bag ADT. Provide set-like operations, including bag union and bag subsumption (but not bag intersection or difference). In addition, provide an operation that returns the number of instances of a given member. • How would you represent a bag without actually storing multiple instances of the same member? • Implement a bag ADT using a sorted array • Implement a bag ADT using a sorted SLL
Examples • Middle-level project • One arithmetic expression is given within an xml file. Process this xml file and put it in an adequate structure. The structure should enable evaluation of the expression. For a given xml file find the value of the expression. . . .
Student Projects • Gains • increased the number of students that passed practical exams • conceptual and concrete ways to organize data for efficient storage and efficient manipulation • make use of data structures in the design of efficient algorithms
Conclusion • We got good programming solutions for the given problems • Good students like this way of teaching • If students did their projects alone, they are well prepared for practical exams