Preface Chapter 1 Basic Principles of Programming Languages 1.1 Introduction 1.1.1 Programming concepts and paradigms 1.1.2 Program performance and features of programming languages 1.1.3 Development of programming languages 1.
2 Structures of programming languages 1.2.1 Lexical structure 1.2.2 Syntactic structure 1.2.3 Contextual structure 1.2.
4 Semantic structure 1.2.5 Error types at different levels 1.2.6 BNF notation 1.2.7 Syntax graph 1.3 Data types and type checking 1.
3.1 Data types and type equivalence 1.3.2 Type checking and type conversion 1.3.3 Orthogonality 1.4 Program processing and preprocessing 1.4.
1 Interpretation and compilation 1.4.2 Preprocessing: macro and inlining *1.5 Program development 1.5.1 Program development process 1.5.2 Program testing 1.
5.3 Correctness proof 1.6 Summary 1.7 Homework and programming exercises Chapter 2 The Imperative Programming Languages, C/C 2.1 Getting started with C/C 2.1.1 Write your first C/C program 2.1.
2 Basic input and output functions 2.1.3 Formatted input and output functions 2.2 Control structures in C/C 2.2.1 Operators and the order of evaluation 2.2.2 Basic selection structures (if-then-else and the conditional expression) 2.
2.3 Multiple selection structure (switch) 2.2.4 Iteration structures (while, do-while, and for) 2.3 Data and basic data types in C/C 2.3.1 Declaration of variables and functions 2.3.
2 Scope rule 2.3.3 Basic data types 2.4 Complex types 2.4.1 Array 2.4.2 Pointer 2.
4.3 Array and string 2.4.4 Constants 2.4.5 Enumeration type 2.5 Compound data types 2.5.
1 Structure types and paddings 2.5.2 Union 2.5.3 Array of structures using static memory allocation 2.5.4 Linked list using dynamic memory allocation 2.5.
5 Doubly linked list 2.5.6 Stack 2.6 Standard input and output, files, and file operations 2.6.1 Basic concepts of files and file operations 2.6.2 File operations in C 2.
6.3 Flush operation in C 2.7 Functions and parameter passing 2.7.1 Call-by-value 2.7.2 Call-by-address 2.7.
3 Call-by-alias 2.7.4 Passing a structure into a function 2.7.5 Passing an array into a function 2.8 Recursive structures and applications 2.8.1 Loop structures versus recursive structures 2.
8.2 The fantastic-four abstract approach of writing recursive functions 2.8.3 Hanoi Towers 2.8.4 Insertion sorting 2.8.5 Merge sort algorithm 2.
8.6 Quick sort algorithm 2.8.7 Tree operations 2.8.8 Gray code generation 2.9 Modular design 2.10 Case study: putting all together 2.
11 Summary 2.12 Homework, programming exercises, and projects Chapter 3 The Object-Oriented Programming Language, C 3.1 A long program example: a queue and a priority queue written in C 3.2 Class definition and composition 3.2.1 Class definition 3.2.2 Scope resolution operator 3.
2.3 Objects from a class 3.2.4 Definition of constructor and destructor 3.3 Memory management and garbage collection 3.3.1 Static: global variables and static local variables 3.3.
2 Runtime stack for local variables 3.3.3 Heap: dynamic memory allocation 3.3.4 Scope and garbage collection 3.3.5 Memory leak detection 3.4 Inheritance 3.
4.1 Class containment and inheritance 3.4.2 Inheritance and virtual function 3.4.3 Inheritance and hierarchy 3.4.4 Inheritance and polymorphism 3.
4.5 Polymorphism and type checking 3.4.6 Polymorphism and late binding 3.4.7 Type Casting in C 3.5 Function and operator overloading 3.5.
1 Function overloading 3.5.2 Operator overloading 3.6 File operations in C 3.6.1 File objects and operations in C 3.6.2 Ignore operation in C 3.
7 Exception Handling 3.8 Case study: putting all together 3.8.1 Organization of the program 3.8.2 Header files 3.8.3 Source files *3.
9 Parallel computing and multithreading 3.9.1 Basic concepts in parallel computing and multithreading 3.9.2 Generic features in C 3.9.3 Case study: implementing multithreading in C 3.10 Summary 3.
11 Homework, programming exercises, and projects Chapter 4 The Functional Programming Language, Scheme 4.1 From imperative programming to functional programming 4.2 Prefix notation 4.3 Basic Scheme terminology 4.4 Basic Scheme data types and functions 4.4.1 Number types 4.4.
2 Boolean 4.4.3 Character 4.4.4 String 4.4.5 Symbol 4.4.
6 Pair 4.4.7 List 4.4.8 Application of Quotes 4.4.9 Definition of procedure and procedure type 4.4.
10 Input/output and nonfunctional features *4.5 Lambda-calculus 4.5.1 Lambda-expressions 4.5.2 l-procedure and parameter scope 4.5.3 Reduction rules 4.
6 Define your Scheme procedures and macros 4.6.1 Unnamed procedures 4.6.2 Named procedures 4.6.3 Scopes of variables and procedures 4.6.
4 Let-form and unnamed procedures 4.6.5 Macros 4.6.6 Compare and contrast imperative and functional programming paradigms 4.7 Recursive procedures 4.8 Define recursive procedures on data types 4.8.
1 Number manipulations 4.8.2 Character and string manipulations 4.8.3 List manipulations 4.9 Higher-order functions 4.9.1 Mapping 4.
9.2 Reduction 4.9.3 Filtering 4.9.4 Application of filtering in query languages 4.10 Summary 4.11 Homework, programming exercises, and projects Chapter 5 The Logic Programming Language, Prolog 5.
1 Basic concepts of logic programming in Prolog 5.1.1 Prolog basics 5.1.2 Structures of Prolog facts, rules, and goals 5.2 The Prolog execution model 5.2.1 Unification of a goal 5.
2.2 Example of searching through a database 5.3 Arithmetic operations and database queries 5.3.1 Arithmetic operations and built-in functions 5.3.2 Combining database queries with arithmetic operations 5.4 Prolog functions and recursive rules 5.
4.1 Parameter passing in Prolog 5.4.2 Factorial example 5.4.3 Fibonacci numbers example 5.4.4 Hanoi Towers 5.
4.5 Graph model and processing 5.4.6 Map representation and coloring 5.5 List and list manipulation 5.5.1 Definition of pairs and lists 5.5.
2 Pair simplification rules 5.5.3 List membership and operations 5.5.4 Knapsack problem 5.5.5 Quick sort 5.6 Flow control structures 5.
6.1 Cut 5.6.2 Fail 5.6.3 Repeat *5.7 Prolog application in semantic Web 5.8 Summary 5.
9 Homework, programming exercises, and projects Chapter 6 Fundamentals of the Service-Oriented Computing Paradigm 6.1 Programming in C# 6.1.1 Getting started with C# and Visual Studio 6.1.2 Comparison between C and C# 6.1.3 Namespaces and the using directives 6.
1.4 The queue example in C# 6.1.5 Class and object in C# 6.1.6 Parameters: passing by reference with ref&out 6.1.7 Base classes and constructors 6.
1.8 Constructor, destructor, and garbage collection 6.1.9 Pointers in C# 6.1.10 C# unified type system 6.1.11 Further topics in C# 6.
2 Service-oriented computing paradigm 6.2.1 Basic concepts and terminologies 6.2.2 Web services development 6.2.3 Service-oriented system engineering 6.2.
4 Web services and enabling technologies 6.3 *Service providers: programming web services in C# 6.3.1 Creating a web service project 6.3.2 Writing the service class 6.3.3 Launch and access your web services 6.
3.4 Automatically generating a WSDL file 6.4 Publishing and searching web services using UDDI 6.4.1 UDDI file 6.4.2 ebXML 6.4.
3 Ad hoc registry lists 6.5 Building applications using ASP.Net 6.5.1 Creating your own web browser 6.5.2 Creating a Windows application project in ASP.Net 6.
5.3 Developing a website application to consume web services 6.6 Cloud computing and big data processing 6.6.1 Cloud computing 6.6.2 Big data 6.7 Summary 6.
8 Homework, programming exercises, and projects Chapter 7 The Multi-Paradigm Programming Language, Python 7.1 Introduction to Python 7.2 A quick start with Python 7.2.1 Install Python and run the first program 7.2.2 Install and use Python IDE 7.2.
3 Python programming in Unix/Linux GNU IDE 7.2.4 Python programming in Visual Studio IDE 7.3 Python fundamentals 7.3.1 Variables, basic types, and functions 7.3.2 Control structures: conditional and loop statements 7.
3.3 Recursive functions 7.3.4 Lambda expressions and functions 7.3.5 Higher-order functions: map, reduce, and filter 7.4 Python complex.