Review of control structures, functions, and primitive data types; Object-oriented programming: Object-oriented design; encapsulation and information-hiding; separation of behavior and implementation; classes, subclasses, and inheritance; polymorphism; class hierarchies; Fundamental computing algorithms: simple searching and sorting algorithms (linear and binary search, selection and insertion sort); Fundamentals of event-driven programming; Introduction to computer graphics: Using a simple graphics API; Overview of programming languages: History of programming languages; brief survey of programming paradigms; Virtual machines: The concept of a virtual machine; hierarchy of virtual machines; intermediate languages; Introduction to language translation: Comparison of interpreters and compilers; language translation phases; machine-dependent and machine-independent aspects of translation; Introduction to database systems: History and motivation for database systems; use of a database query language; Software evolution: Software maintenance; characteristics of maintainable software; reengineering; legacy systems; software reuse.

Course Syllabus