Data Structures an Algorithms are at the heart of Computer Science. This module intends to provide an in-depth coverage of data structures and Algorithms, including the asymptotic analysis of algorithms and the common algorithms techniques (Divide and Conquer, Greedy Algorithms, Dynamic Programming).
Indicative Content
Unit1: Introduction and scope of graphics: Basic concepts and definitions Types of Graphics, Application of Graphics, Pixels and Frame buffers, vector and character generation. Graphics Primitives: Display devices, Primitive devices, Display File Structure, Display control text. Raster graphics devices. Picture segmentation, display files.
Unit2: Graphical interaction: Device and data categories, Input modes, Callbacks, Glut basics, Event handling echoing, Interactive techniques. Lab exercises to create interactive graphic applications.
Unit3: Algorithms to draw graphic primitives: Scan conversion of Points, Line -DDA Algorithm, Bresenham’s Line Drawing Algorithm, Circle- Bresenham’s, Mid-point Circle Algorithm, Ellipse- Bresenham’s ellipse Algorithm, Polygons-various attributes of polygons, seed fill algorithms, Introduction of Bezier curve and B-spline, vector and character generation. Lab exercises to draw a graphic line, circle, and ellipse
Unit4: Graphic Transformations: Matrices transformations- 2D translation, Scaling, Rotation, Reflection and Shear, 3D translation, scaling, rotation transformations, Windowing transformations, 2D, 3D Viewing transformations, Transformation pipeline, Clipping - Point, Line, Polygon Clipping Algorithms, Cohen-Sutherland algorithm. Lab exercises for various transformations and clipping.
Unit5: Hidden Line and Surface: Backface removal algorithms, hidden line methods, Ray tracing, Rendering and Illumination Modeling- Lighting, reflection, and transmission models, Shading algorithms.
Unit6: Object Modeling: Wireframe models, Constructive models, Decomposition models, and Standard Graphic packages.
This course presents general issues of programming languages unlike Computer Programming which mostly tells about certain programming language (e.g. C and C++). As a result of studying this course the students will be able not only apply their practical programming skills but also understand main principles those lay in the base of any programming language. This course helps them to switch easily from one programming language to another. Since it is impossible to teach students all programming languages, present and future, this ability is very important for modern computer engineers. We guess that the future will show a variety of innovative programming languages. Students get familiar with different kinds of Programming Languages and their comparison. The topics include the history of the development of languages, different programming paradigms, imperative, functional, logic, object-oriented languages, aims, objectives and principles of language design; aims, objectives and approaches of translation etc
The module will cover the following main themes and associated topics
Unit1. Object-oriented program design Key issues related to a contemporary software
development process. Adaptation of the standard five-step approach to software development
(problem specification, analysis, design, implementation and testing) to the object-oriented
paradigm. Object diagrams as an object-oriented design and modelling technique.
Unit2. Objects, primitive data and program statements Definition and use of objects. Use of
predefined classes from the Java standard library. Primitive types, operators and expressions.
Procedural statements and basic control structures in Java.
Unit3. Classes Issues related to writing classes and methods, such as instance data, visibility,
scope, method parameters and return types, constructors, object relationships, method
overloading and decomposition. Various examples of related program design and
implementations. Some advanced topics such as static modifiers, and interfaces for
implementing polymorphism.
Unit4. Interfaces and Abstract classes Definition and use of Interfaces and Abstract classes in
Java. A brief introduction to inheritance and its role in software design.
Unit5. Exceptions and I/O Streams Exposure (through example programs) to: exception
messages, exception propagation, and checked and unchecked exceptions; I/O streams
including the IOException class; Standard Java I/O; and the keyboard class.
Unit6. Applet Programming, Introduction to SWING and AWT