Kendall Hunt Publishing

Home

|

PreK-12

|

Higher Education

|

Publish With Us

|

Conventions

|

Customer Support

|

About KH

|

View Cart


Home:Shop:Product
 
INTRODUCTION TO PROGRAMMING LANGUAGES: PRINCIPLES, C, C++, SCHEME AND PROLOG

ISBN: 978-0-7575-2974-0
Copyright: 2006
Edition: 2
Number of Pages: 396
Binding: perfect
Disciplines: computer science, information technology
Retail Price: $97.16

Additional Information
Overview back to top

This text is intended for computer science and computer engineering students in their sophomore year of study. It is assumed that students have completed a basic computer science course and have learned a high-level programming language like Pascal, C, C++, or Java. Most parts of the contents presented in the text have been used in the "Introduction to Programming Languages" course taught by the author in the School of Computer Science at the University of the Witwatersrand at Johannesburg, and in the Computer Science and Engineering Department at Arizona State University. Being different from the existing texts on programming languages that either focus on teaching programming paradigms, principles, and the language mechanisms, or focus on language constructs and programming skills, this text takes a balanced approach on both sides. It teaches four programming languages representing four major programming paradigms. Programming paradigms, principles, and language mechanisms are used as the vehicle to facilitate learning of the four programming languages in a coherent way. The goals of such a programming course are to make sure that computer science students are exposed to different programming paradigms and language mechanisms, and obtain sufficient programming skills and experiences in different programming languages, so that they can quickly use these or similar languages in other courses. Although there are many different programming paradigms, imperative, object-oriented, functional, and logic programming paradigms are the four major paradigms widely taught in computer science and computer engineering departments around the world. The four languages we will study in the text are the imperative C, object-oriented C++, functional Scheme, and logic Prolog.

By the end of the course, students should understand

  •  the language structures at different layers (lexical, syntactic, contextual, and semantic), the control structures and the execution models of imperative, object-oriented, functional, and logic programming languages;
  •  program processing (compilation versus interpretation) and preprocessing (macros and inlining);
  •  different aspects of a variable, including its type, scope, name, address, memory location, and value.

More specific features of programming languages and programming issues are explored in cooperation with the four selected languages. Students are expected to have understood and be able to

  •  write C programs with complex data types, including pointers, arrays, and generic structures, as well as programs with static and dynamic memory allocation;
  •  apply the object-oriented features such as inheritance and class hierarchy, polymorphism and typing, overloading, early versus late binding, as well as the constructors, the destructor and the management of static memory, stack and heap in C++;
  •  apply the functional programming style of parameter passing and write Scheme programs requiring multiple functions;
  •  apply the logic programming style of parameter passing, write Prolog facts, rules and goals, and use multiple rules to solve problems;
  •  be able to write programs requiring multiple subprograms/procedures to solve large programming problems;
  •  be able to write recursive subprograms/procedures in imperative, object-oriented, functional and logic programming languages.
The text is organized into five chapters and three appendices. Chapter one discusses the programming paradigms, principles, and common aspects of programming languages. Chapter two uses C as the example of the imperative programming paradigm to teach how to write imperative programs. It is assumed that the students have basic understanding of a high-level programming language such as Pascal, C, C++, or Java. Chapter three extends the discussion and programming from C to C++. The chapter focuses on the main features of object-oriented programming paradigms, including class composition, inheritance, dynamic memory allocation and deallocation, late binding, polymorphism, and class hierarchy. Chapters four and five take a major paradigm shift to teach functional and logic programming, respectively. Students are not required to have any knowledge in functional and logic programming to learn from these two chapters. Assignments, programming exercises, and projects are given at the end of each chapter. The three appendices provide supplementary materials to the main text. In Appendix A, the basic computer architecture and assembly language programming are introduced. If students do not have basic computer science background, the material should be covered in the class. Appendix B first introduces basic Unix commands. If the class uses a Unix-based laboratory environment, students can read the appendix to get started with Unix. Then the appendix introduces the major programming language environments that can be used to support teaching the four programming languages. Appendix C gives the ASCII code table that is referred in various parts of the text. In the main text, the sections with an asterisk mark are optional and can be skipped if time does not permit to cover all the material. Chapters four and five are self-contained and can be taught independently, or in a different order.

I wish to thank all those who have contributed to the materials and to the formation of this text. Particularly, I would like to thank my colleagues, Scott Hazelhurst and Conrad Mueller, of the University of the Witwatersrand, and Richard Whitehouse of Arizona State University who shared their course materials with me. Parts of these materials were used in teaching the programming languages course and used in this text. Thomas Boyd, Joe DeLibero, and Renee Turban of Arizona State University reviewed the final draft of the text and made constructive suggestions and useful comments. My teaching assistants Ibraz Mohammed, Jianchun Fan, Harish Bashettihalli, and Rajanikanth Mitta, helped me in the past few years prepare the assignments and programming exercises. Raynette Brodie, the student consultant for Microsoft at Arizona State University, contributed the section "From C++ to C#" and the C# related materials in other sections. Peter Hallam, C# developer at Microsoft, made very useful comments on C# related topics. The major part of chapter five, sections 5.1 through 5.7, was reprinted (arranged by the publisher) from Tom Hankins and Thom Luce's book Prolog Minimanual.

I also would like to thank the editoral team, Jay Hays, Billee Jo Hefel, and Lynne Rogers at Kendall/Hunt Publishing. Jay pushed me into the position to write the text, Billee Jo checked my progress constantly that made me finally meet the deadline, and Lynne completed the production process.

The text was written while I was carrying out a full university workload. I am thankful to my family, Wei, George, and Jane. I could not imagine that I would be able to complete the task without their generous support by allowing me to use most of the weekends in the past year to write the text.
Although I have used the materials in teaching the programming languages courses at the University of the Witwatersrand, Johannesburg and at Arizona State University for several years, the text was put together in a short period of time. There are certainly many errors of different kinds. I would appreciate it if you could send me any corrections, comments, or suggestions for improving the text. My email address dedicated to dealing with the responses to the text is <text.cse240@asu.edu>. Instructors who use the text can contact the author for instructional support, including lecture slides in PowerPoint format and the solutions to the assignments.

Yinong Chen

or:
Advanced Search
PreK-8 Catalog
PreK-12 International Catalog
9-12 Catalog
Communication Catalog
College Success Catalog
Fine Arts Catalog
Gifted Education Catalog
Reading Resources Catalog
Our Blog
Home   K-12   Higher Education   Publish With Us   Conventions   Customer Support   About Us  
Please send an e-mail to webmaster@kendallhunt.com with questions or concerns regarding this web site.  Thank You!
4050 Westmark Drive P.O. Box 1840 Dubuque, Iowa 52004-1840. Copyright Kendall/Hunt Publishing Company. All rights reserved.