CPEN 309:Programming Language Fundamentals

Main block


History and overview of programming language from FORTRAN to modern languages such as Java, including reasons for the study of programming fundamentals, challenges and techniques involved in designing programming languages, and role of programming fundamentals in computer engineering. Programming paradigms: procedural and functional programming, object oriented design, encapsulation and information hiding, separation of behavior and implementation, classes and subclasses and inheritance, event driven programming. Syntax and Semantics of programming: basic syntax and semantics of high level language, variables and types, expressions and assignments, simple input-output, conditional and iterative control structures, functions and parameter passing.  Algorithms and problem solving: problem solving strategies, role of algorithms in problem solving, algorithms implementation strategies, debugging strategies, algorithm properties and concepts, structured decomposition. Data structures: primitive types, arrays, records, strings and string processing, data representation in memory, stack and heap allocation, runtime storage management, pointers and references, linked structures, implementation for stacks and queues and hash tables, implementation for graphs and trees, strategies for choosing right data structure. Recursions: concept of recursion, recursive mathematical functions, divide-and-conquer strategies, recursive backtracking, implementation of recursion.  Using APIs: API programming, class browsers and related tools, programming by example, debugging in API environment, component based computing, middle ware.