Introduction to Programming Languages
Programming in C, C++, Scheme, Prolog, C#, and SOA
Yinong Chen and Wei-Tek Tsai
Chapter 1 Basic Principles of Programming
Languages
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.3 Data types and type checking
1.3.1 Data types
and type equivalence
1.3.2 Type checking
and type conversion
1.4 Program processing and preprocessing
1.4.1 Interpretation
and compilation
1.4.2 Preprocessing:
macro and inlining
1.5.1 Program
development process
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.5.3 Array of
structures using static memory allocation
2.5.4 Linked list
using dynamic memory allocation
2.5.6 Files,
standard input/output files, and file operations
2.6 Functions and parameter passing
2.7.1 Loop
structures versus recursive structures
2.7.2 The fantastic
four abstract approach of writing recursive functions
2.7.3 Case study 1:
the Tower of Hanoi
2.7.4 Case study 2:
sorting an array
2.10 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.2 Scope
resolution operator
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.4.1 Class
containment and inheritance
3.4.2 Inheritance
and hierarchy
3.4.3 Inheritance
and polymorphism
3.4.4 Polymorphism
and type checking
3.4.5 Polymorphism
and late binding
3.7 Homework, programming exercises, and
projects
Chapter 4 The Functional Programming Language,
Scheme
4.1 From imperative programming to
functional programming
4.4 Basic Scheme data types and functions
4.4.9 Definition of
procedure and procedure type
4.4.10 Input/output
and non-functional features
4.5.2 l-procedure and parameter scope
4.6 Define your Scheme procedures and
macros
4.6.3 Scopes of
variables and procedures
4.6.4 Let-form and
unnamed procedure
4.6.6 Compare and
Contrast Imperative and Functional Programming Paradigms
4.8 Define recursive procedures on data
types
4.8.2 Character and
string manipulations
4.11 Homework, programming exercises, and
projects
Chapter 5 The Logic Programming Language,
Prolog
5.1.4 Putting
Prolog to work by querying the database
5.2 Rules, structured data and the scope
of variables
5.2.3 The
scope of Prolog variables
5.4 Recursion and recursive rules
5.4.1 Recursion
as a generalization of non-recursive rules
5.4.2 Suggestions
for writing recursive rule sets
5.4.3 Finding
factorial values
5.5.2 Examining
the elements of a list
5.6.2 Database
manipulation predicates
5.6.3 Input
and output examples
5.7 Program control and program design
5.7.1 Control
program execution
5.8.1 Representing
Prolog lists in pairs and writing recursive rules on lists
5.8.2 Flow
control structures: cut and repeat
5.8.3 The
Prolog execution model
5.10 Homework, programming exercises, and
projects
Chapter 6 Fundamentals of Service-Oriented
Computing Paradigm
6.1.1 Comparison
between C++ and C#
6.1.2 Namespaces
and the using directive
6.1.5 Parameters:
passing by reference with ref & out
6.1.6 Base classes
and constructors
6.1.7 Constructor,
destructor, and garbage collection
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# and .Net
6.3.1 Creating a
Web service project
6.3.2 Writing the
service agent
6.3.3 Launch and
access your Web services
6.3.4 Automatically
generating WSDL file
6.4 Publishing and searching Web services
using UDDI
6.5 Building application using ASP.Net
6.5.1 Creating a
windows application project in ASP.Net
6.5.2 Creating and
composing a Web application based on remote Web services
*6.6 Advanced topics in service-oriented
software development
6.6.1 Simple model
multiple analyses versus multiple models multiple analyses
6.6.2 Infrastructure
embedded development framework
6.7 Homework, programming exercises, and
projects
Appendix A Basic Computer Architectures and
Assembly Language Programming
A.1 Basic computer components and
computer architectures
A.2 Computer architectures and assembly
programming
A.3 Subroutines and local variables on
stack
Appendix B Programming Environments Supporting
C, C++, Scheme, and Prolog
B.1 Introduction to Unix commands
B.2 Programming environments supporting
C, C++, and C# programming
B.2.1 Getting
started with GNU GCC under Unix operating system
B.2.2 Getting
started with Visual Studio .Net 2005 under MS Windows operating system
B.2.3 Download C,
C++, and C# programming development tools and environments
B.3 Programming environments supporting
Scheme programming
B.3.1 Getting
started with DrScheme
B.3.2 Download
DrScheme programming environment
B.4 Programming environments supporting
Prolog programming
B.4.1 Getting
started with GNU Prolog
B.4.2 Download
Prolog programming development tools
Appendix C ASCII Character Table