Terminologies: Source/object Code, Interpreters, Compilers. Basics: Data types, Variables, Operators, Expressions, Statements, Blocks. Control structures: Selection, Iteration. Basic Data Structures: Arrays, Records. Programming using a state-of-the-art high level language, e.g. Pascal, C, Modula-2, Ada. Introduction to software Engineering: basic concepts, project planning and management. Software process models: waterfall model, incremental process models, evolutionary process models, specialized process models and agile process models. Software requirement analysis and specification. Software design: function-oriented design, object-oriented design, detailed design and programming methodologies. Software testing testing approaches e.g. unit testing and integration testing; testing tactics e.g. white-box testing, black-box testing and object-oriented testing. Software evolution and CASE tools.