# CoS 510: Data Structures

Designing and implementing larger software projects using object-oriented methods. The students will acquire knowledge about data visualization and will learn to apply this knowledge in independent work.

**Contents:**

- The software development cycle (specification, design, implementation, testing, maintenance), object-oriented design (object, classes, inheritance techniques, UML, templates, STL, design patterns); C++, Java
- Algorithms and Data Structures
- Searching, sorting, hashing, basic data structures, algorithms using graphs, complexity, correctness, algorithm families
- Visualization pipeline, data sources and data types, transformation and filtering of data, techniques for visualizing 1st, 2nd, and 3rd scalar data, marching cube algorithm, rendering systems and methods, ray-tracing, perception and color, color models, visualizing vector field data, information visualization of physical and abstract data, aesthetics and techniques in graphical design.
- Makefiles, version control systems, combination of different programming languages, scripting languages, debugging, profiling, numerical libraries, Matlab, computer algebra packages
- Strategies and methods of worldwide distributed (GRID) computing, current problems in the development and application of GRID middleware
- Scientific databases, data models for statistical and scientific databases, semantic and object-oriented modelling of application domains.

**Prerequisites:**

- Basic familiarity with the C programming language
- Memory Architecture and Data Modeling: Types, Variables, and Expressions
- Discrete mathematical structures: Sets, Recursion, Relations, Functions, and Graphs

**Bibliography and teaching material includes:**

*Version Control by Example*, Eric Sink*Design Patterns: Elements of Reusable Object-Oriented Software*, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides*The C++ Standard Library*Nicolai M. Josuttis*Problem Solving with Algorithms and Data Structures*, Brad Miller and David Ranum*Interactive Computer Graphics*Edward Angel

**Assessment methods:**

- The following assessment methods will be combined for the final grade:
- Weekly homework assignments
- Project on scientific data visualization
- Written final exam