This course introduces JAVA to students as an example of an object oriented programming language. The course starts with a briefing on Java history and the classifications of different Java editions. The concepts of classes and objects are introduced followed by a description of various types of class members. The course describes the concepts of abstraction and encapsulation and how to apply these concepts when creating classes. The course describes the objectoriented relationships: association, aggregation, composition, inheritance and implementation. Also the concept and role of polymorphism are introduced covering method overloading, method overriding, and dynamic method dispatching. Exception handling and the usage of Java API are presented with a concern to using javax.swing to build GUI applications.
This course utilizes Java as a platformindependent objectoriented programming language and C as platformbased programming language. It introduces advanced programming features through applications. Among those advanced features: building user interface using swing, multithreaded programming, database connectivity using JDBC, and distributed computing using Remote Method Invocation (RMI). The course also covers the basics of web programming using Java web technologies. Unix/Linux programming tools and environments are introduced. Scripting languages as another problem solving technique is introduced, such as shell scripting, python and perl. Software models are discussed and opensource utilization is encouraged.
This course introduces the fundamental mathematical models of computation. The course presents both inherent capabilities and limitations of these computational models as well as their relationships with formal languages. Topics to be covered include: Finite automata and regular languages, Deterministic and nondeterministic computations, Contextfree grammars, languages, and pushdown automata, Turing machines, recursive and recursively enumerable sets, undesirability, introduction to computability and complexity theory.
This course introduces students to the analysis and design of computer algorithms. Topics covered include searching, sorting, selection, graph structures, traversal algorithms, P/NP complete problems, analysis of worst case running time of algorithms, basic properties of randomized algorithms, how to use the major algorithms, data structures and design paradigms, and introduction about the design of parallel algorithms.
This course provides an overview of the principals and methodologies of computer graphics, including the representation, manipulation, and display of two and threedimensional objects. Discusses graphics hardware, graphics programming, special algorithms, shading models, and animation and interaction techniques. GPU architecture is explained and CUDA rendering example is covered.
The preparation sessions for he CCIT programming competition, local ACM ICPC, regional and international hopefully. All material will be posted here, and we can use the forum and activities to communicate.
