Library Home

Java, Java, Java: Object-Oriented Problem Solving

(4 reviews)

computer programming and problem solving pdf

Ralph Morelli, Trinity College

Ralph Walde, Trinity College

Copyright Year: 2016

Publisher: Ralph Morelli, Ralph Walde

Language: English

Formats Available

Conditions of use.

Attribution

Learn more about reviews.

computer programming and problem solving pdf

Reviewed by Onyeka Emebo, Assistant Professor, Virginia Tech on 12/28/21

The text adequately addresses areas under Object Oriented Programming using Java as a Programming Language for Introduction to Computer Science courses. It gently introduces basic concepts in computer, objects and java using problem solving... read more

Comprehensiveness rating: 5 see less

The text adequately addresses areas under Object Oriented Programming using Java as a Programming Language for Introduction to Computer Science courses. It gently introduces basic concepts in computer, objects and java using problem solving approaches and gradually builds up to more advanced Java technologies in such a simplified manner that can be easily understood. The text also provides a table of content at the beginning and a summary of points for each chapter with exercises.

Content Accuracy rating: 4

The text content is accurate, without errors and unbiased. There is however some links that needs to be updated.

Relevance/Longevity rating: 4

While the field of computer science with particular emphasis to programming as it relates to this text is constantly evolving, the approach taken by this text to teach the essentials is likely to persist. The code, tested in Java 8, should continue to work with new Java releases. Updates to the text can be done easily by the way it has been written.

Clarity rating: 5

The text is written in a clear and easy to understand manner. The objectives, explanations, examples and exercises are clear and easy to follow. The codes are well commented to aid readability.

Consistency rating: 4

The text is highly consistent in both structure and terminology. It starts each chapter with objectives and outline and concludes with summary, exercises and solutions. However, some codes within the chapters are put in figures while others are not, this could be confusing.

Modularity rating: 5

The text is divided in 17 chapters (0 - 16) and 8 appendices (A – H). Each chapter is further divided into sections and subsections. This breakdown makes it easier for instructors to apportion sections to students at different times within the course.

Organization/Structure/Flow rating: 5

The text is organized in a manner that is logical and it flows well from section to section. The structure makes navigation from chapter to chapter easier.

Interface rating: 3

I reviewed the PDF version and it looks good to a large extent. The links in the table of contents are working properly. There are clickable links within the text to different figures, sections, such as appendices, and external websites. However, there are some issues with some figure titles, e.g., figure 12, 1.10, 2.7, 2.10, 2.14, etc. are cut off. Some hyperlinks for some figures missing e.g., figure 2.8 and some figures don’t have titles.

Grammatical Errors rating: 5

The text contains no grammatical errors.

Cultural Relevance rating: 5

The text is culturally neutral. The examples are unbiased in the way it has been presented.

Reviewed by Ghaith Husari, Assistant Professor, East Tennessee State University on 4/17/20

This book covers Object-Oriented Programming under JAVA. It introduces the concepts of object-oriented programming and they are used for problem-solving. This book covers all the relevant areas of Object-Oriented Programming under Java. Also, it... read more

This book covers Object-Oriented Programming under JAVA. It introduces the concepts of object-oriented programming and they are used for problem-solving. This book covers all the relevant areas of Object-Oriented Programming under Java. Also, it covers more advanced topics such as socket programming and algorithms.

Content Accuracy rating: 5

The Object-Oriented concepts and implementation example shown in code samples are accurate and easy to learn as the code samples are aligned with the concept being discussed. Some links and URLs are out-dated but they have little to no impact on student learning. However, I would add a note that says "some of the links and URLs might not up-to-date. However, they can be found using search engines if necessary"

Programming languages get updated regularly to include new and easier functions to use. While it is impossible for a textbook to include every function, this textbook provides a great learning opportunity that allows students to build the muscle to be able to learn more about Java online. When it comes to Object-Oriented concepts, the book is extremely relevant and up-to-date

The textbook is very easy to understand and the code sample is both clear (code readability) and relevant.

Consistency rating: 5

The text and the terms it contains are consistent. Also, the textbook follows a consistent theme.

The textbook chapters are divided into sections and subsections that are shown also in the table of contents which can be used to visit each section.

The textbook consists of seventeen chapters that are organized in a logical manner. The more general concepts such as problem-solving and programing are placed at the beginning, then the chapters introduce the discuss Object-Oriented Programming come after the general chapters. The more advanced topics such as socket programming and data structures and algorithms come towards the end. This made a lot of sense to me.

Interface rating: 5

The textbook is easily accessible online and it can be downloaded to open with Edge or Adobe Reader without any problems.

No grammar issues have been noticed.

This textbook is neutral and unbiased.

Reviewed by Guanyu Tian, Assistant Professor, Fontbonne University on 6/19/18

This textbook covers Object-Oriented Programming with Java programming language pretty well. It starts with the concept of Objects and problem solving skills and then dive into Java programming language syntax. Overall, it appropriately covers all... read more

Comprehensiveness rating: 4 see less

This textbook covers Object-Oriented Programming with Java programming language pretty well. It starts with the concept of Objects and problem solving skills and then dive into Java programming language syntax. Overall, it appropriately covers all areas of the subject including the main principles of Object-Oriented Programming and Java programming language. In the later chapters, this textbook also introduces advanced topics such as concurrent programming, network/socket programming and data structures. The textbook provides table of contents at the beginning and index of terms at the end. Each chapter also provides a list of key words and a list of important concepts and technique terms.

Content Accuracy rating: 3

The content of the textbook is mostly accurate. Many URLs linked to Java documentations and APIs are not up-to-date.

Many URLs to Java references are not up-to-date and many online samples are not accessible. Nonetheless, the concepts of Object-Oriented Programming and Java programming language syntax are mostly current. Any updates to the contents of the textbook can be implemented with minimal effort.

The text is easy to understand. However, some of the texts are not displayed on adobe reader.

Consistency rating: 3

The text is consistent in terms of framework. Each chapter starts with introduction to a problem, and then discussion and design of the solution with UML diagrams; then Java is used to implement the solution(s). However, there is some level of inconsistency in terms of Java code samples. For example, some Java code examples use appropriate indentations and new lines, but some examples do not. This may confuse students.

Each chapter is divided into different sections and subsections. A student can go to each section of a chapter by clicking it in the Table of Contents.

Organization/Structure/Flow rating: 3

The topics in this text book are organized in a reasonable order. It starts with general concepts of computer and program design, then Objects and Java Programming Language, and then advanced topics in computer programming. It would be better if the textbook starts with Java programming language and then principles of Object Oriented programming.

Some of the texts are not displayed in the reviewer's adobe reader. Many diagrams and figures are poorly drawn. Overall, the interface of the book is one area that needs improvement.

No major grammar issues has been noticed.

The text of this textbook is a neutral and unbiased.

Overall, this textbook covers materials of Object-Oriented Programming with Java taught in first or second-year computer science course. However, the contents of Java programming language has not been up-to-date and the interface of the book is very poor compare to similar books the reviewer has used for learning and teaching the same materials. Some sample codes are not well written or inconsistent in terms of the use of indentation and new lines. Many URLs are obsolete and the web pages are not accessible.

Reviewed by Homer Sharafi, Adjunct Faculty Member, Northern Virginia Community College on 6/20/17

The textbook includes the material that is typically covered in a college-level CS1 course. Using an “early objects” approach and Java as the programming language, the authors go over problem-solving techniques based on object-oriented... read more

The textbook includes the material that is typically covered in a college-level CS1 course. Using an “early objects” approach and Java as the programming language, the authors go over problem-solving techniques based on object-oriented programming principles. In addition to an Index of terms towards the end of the text, each chapter summary includes the technical terms used, along with a bulleted-list of important points discussed in that chapter.

The computer science concepts and the accompanying sample code are accurate and error-free; however, the only issue is the fact that the URLs that make references to various aspects of Java, such as API documentation, JDK, and the Java Language Specification, have not been updated to reflect the fact that Sun Microsystems was acquired by Oracle back in 2010.

Like other software systems, Java is updated on a regular basis; nonetheless, the computer science concepts discussed in the textbook are based on standard undergraduate curriculum taught in a CS1 course. Therefore, any updates to the textbook would need to be with regard to the version of Java with minimal effort.

Clarity rating: 4

The authors deliver clear explanations of the computer science concepts and the accompanying Java language features.

There is a consistent theme throughout much of the text: A topic is introduced and discussed within the context of a problem. Its solution is then designed and explained using UML diagrams; finally, Java is used to illustrate how the solution is implemented on the computer.

Each chapter is divided into sections that can easily be identified within the table of contents. Therefore, it’s fairly easy for a student to pick and choose a section in a chapter and work on the other sections later. Throughout each chapter, there are self-study exercises to incrementally test understanding of the covered material. Solutions to those self-study exercises are then provided towards the end of the chapter. In addition, each chapter includes end-of-chapter exercises that can be used to assess one’s understanding of the computer science concepts as well as the various features of Java.

The book consists of seventeen chapters; however, a typical CS1 course would need the material in the first ten chapters only, and those chapters are set up in a logical manner, allowing one to go through the material sequentially. Depending on how fast he first ten chapters are covered during the course of a semester, an instructor may choose from the last seven chapters in the text to introduce more advanced topics in computer science and/or Java.

Interface rating: 1

The textbook can be accessed online or opened using Acrobat Reader with no problem. There are no issues, as long as navigation is done one page after another manually. However, when browsing through the table of contents (TOC) or the Index, the entries are not set up using any live links. That is, you cannot click on a page number associated with an item within the TOC or the Index to go directly to that page.

Grammatical Errors rating: 3

This reviewer did not come across any such issues, while going through the text.

This is a computing textbook, where the contents are presented using technical terms. Culturally, the textbook is completely neutral and unbiased in terms of how the material is presented.

Table of Contents

  • 0 Computers, Objects, and Java
  • 1 Java Program Design and Development
  • 2 Objects: Defining, Creating, and Using
  • 3 Methods: Communicating with Objects
  • 4 Input/Output: Designing the User Interface
  • 5 Java Data and Operators
  • 6 Control Structures
  • 7 Strings and String Processing
  • 8 Inheritance and Polymorphism
  • 9 Arrays and Array Processing
  • 10 Exceptions: When Things Go Wrong
  • 11 Files and Streams
  • 12 Recursive Problem Solving
  • 13 Graphical User Interfaces
  • 14 Threads and Concurrent Programming
  • 15 Sockets and Networking
  • 16 Data Structures: Lists, Stacks, and Queues

Ancillary Material

  • Ralph Morelli, Ralph Walde

About the Book

We have designed this third edition of Java, Java, Java to be suitable for a typical Introduction to Computer Science (CS1) course or for a slightly more advanced Java as a Second Language course. This edition retains the “objects first” approach to programming and problem solving that was characteristic of the first two editions. Throughout the text we emphasize careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.

The third edition retains many of the features of the first two editions, including:

  • Early Introduction of Objects
  • Emphasis on Object Oriented Design (OOD)
  • Unified Modeling Language (UML) Diagrams
  • Self-study Exercises with Answers
  • Programming, Debugging, and Design Tips.
  • From the Java Library Sections
  • Object-Oriented Design Sections
  • End-of-Chapter Exercises
  • Companion Web Site, with Power Points and other Resources

The In the Laboratory sections from the first two editions have been moved onto the book's Companion Web Site. Table 1 shows the Table of Contents for the third edition.

About the Contributors

Ralph Morelli, Professor of Computer Science Emeritus. Morelli has been teaching at Trinity College since 1985, the same year the computer science major was first offered. More recently, he was one of the Principal Investigators (PIs) for the Humanitarian Free and Open Source Software (HFOSS) project, an NSF-funded effort to get undergraduates engaged in building free and open source software that benefits the public.  In summer 2011 a team of Trinity HFOSS students and faculty traveled to Haiti to build an open source mobile application that helps manage beneficiaries for a humanitarian aid organization. Currently Morelli is the PI of the Mobile CSP project, an NSF-funded effort to train high school teachers in CT and elsewhere to teach the emerging Advanced Placement CS Principles course that is being created by the College Board. The main goal of this NSF initiative is to increase access to computer science among underrepresented groups, including girls, African Americans, and Hispanic Americans.  The Mobile CSP course teaches students to create mobile apps to serve their community.  In summer 2014, a group of 20 Mobile CSP students spent their summer building mobile apps for the city of Hartford. 

Ralph Walde.  Dr. Walde has given Trinity 28 years of distinguished service, first as a Professor of Mathematics and now as a Professor of Computer Science. He was instrumental in helping to establish and nourish computing at Trinity and was one of the founding members of the Computer Science Department.

Contribute to this Page

Browse Course Material

Course info.

  • Prof. John Guttag

Departments

  • Electrical Engineering and Computer Science

As Taught In

  • Computer Science

Introduction to Computer Science and Programming

Lecture 3: problem solving.

  • Download video
  • Download transcript

facebook

You are leaving MIT OpenCourseWare

Learning Problem Solving Through Computer Programming

  • Conference paper
  • Cite this conference paper

computer programming and problem solving pdf

  • Emrah Orhun 2  

Part of the book series: NATO ASI Series ((NATO ASI F,volume 107))

151 Accesses

Although strong claims have been made concerning the cognitive benefits of learning computer programming, research results are inconclusive. This paper studies the findings of the recent research trying to clarify the relationship between problem solving skills and learning to program. The scope of the study covers work done with Logo, Prolog and expert system shells. Findings indicate the necessity of explicit instruction in the skills to be transferred to domains beyond programming.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
  • Durable hardcover edition

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Unable to display preview.  Download preview PDF.

Anderson,J.R. and B.J.Reiser (1985). The LISP Tutor, Byte , 10:4 , pp. 159–175, 185.

Google Scholar  

Bassok,M. and K.Holyoak(1987) Schema-based interdomain transfer between isomorphic topics in algebra and physics . Working paper, University of Pittsburgh, LRDC, 1987.

Bonar,J. and R.Cunningham (1988). Bridge: an intelligent tutor for thinking about programming, In J.Self (ed.), Artificial Intelligence and Human Learning; Intelligent Computer-Aided Instruction , Chapman and Hall, London, 1988.

Briggs,J. (1982). Teaching Mathematics with Prolog , B.Sc. Thesis, Dept. of Computing, Imperial College, London.

Chi,M.R.H., P.J.Feltovich, and R.Glaser(1981). Categorization and Representation of Physics Problems by Experts and Novices, Cognitive Science , 5: 2, pp. 121–152.

Clements, D.H. (1986) Effects of Logo and CAI Environments on Cognition and Creativity, J. of Educational Psychology , Vol. 78, No. 4,pp. 308–318.

Clements,D.H. and Gullo,D.F. (1984). Effects of Computer Programming on Young Children’s Cognition. J. of Educational Psychology , 76, pp. 1051–1058.

Article   Google Scholar  

Cumming,E. and Abbot,E. (1988). Prolog and Expert Systems for Children’s Learning, in P.Ercoli and R.Lewis (eds.) Artificial Intelligence Tools in Education, Elsevier Science Publisher , pp. 163–175.

Dalbey,J. and Linn,M.C. (1985). The Demands and Requirements of Computer Programming: A Literature review. J. of Educational Computing Research , I, pp. 253–274.

De Corte,E., Verschaffel,L. and Schrooten,H. (1990). Cognitive Effects of Computer-Oriented Learning , paper presented at the Seventh International Conference on Technology and Education, Brussels, March 20–22.

DuBoulay,B. and O’Shea,T. (1981). Teaching Novice Programming in Computing Skills and the User Interface , M.O.Coombs and J.L.Alty(eds.), Academic Press, London, pp. 147–200.

DuBoulay,B. (1986). Some Difficulties of Learning to Program, J. of Educational Computing Research , 2: 1, pp. 57–73.

Eisenstadt,M. and Brayshaw,M. (1988). AORTA Diagrams as an Aid to Visualizing the Execution of Prolog Programs, Human Cognition Research Laboratory Technical Report No.29 , The Open University, Milton Keynes.

Elsom-Cook,M. (1987). Acquisition of Computing Skills, CITE Report No.21 , The Open University, Milton Keynes.

Ennals,J.R. (1981). Logic as a Computer Language for Children, DOC 8116 , Dept. of Computing, Imperial College.

Ennals,J.R. (1982). Teaching Logic as a Computer Language in Schools, Proceedings of First International Logic Programming Conference, Marseille, Van Canneghem, M.(ed.).

Erlich,K., Abbott,V., Salter,W. and Soloway,E.(1984). Issues and Problems in Studying Transfer Effects of Programming , paper presented at the Annual Meeting of the American Educational Research Association, New Orleans. (ERIC Document Reproduction Service, ED-257–441).

Fay,A.L. and Mayer,R.E. (1987). Children’s Naive Conceptions and Confusions About Logo Graphics Commands, J. of Educational Psychology , Vol. 79, No. 3, pp. 254–268.

Geva,H. and Cohen,R.(1987). Transfer of Spatial Concepts from Logo Map-Reading, in Proceedings of the Biennial Meetings of the Society for Research in Child Development , Baltimore, MD: SRCD, April 1987.

Gick,M.L. and K.J.Holyoak (1983). Schema Induction and Analogical Transfer. Cognitive Psychology , 15, pp. 1–38.

Goldstein,I.(1974). Planning Paradigms Knowledge for Organizing Models into Programs , NATO, pp.407–419.

Goldstein, I. (1978). Developing a Computational Representation for Problem Solving Skills, AI Laboratory Memo 495, MIT.

Gorman,H. and Bourne,L.E. (1983). Learning to Think by Learning Logo: Rule Learning in Third Grade Computer Programmers. Bulletin of the Psychonomic Society , 21, pp. 165–167.

Greeno,J.G. (1976). Cognitive Objectives of Instruction: Theory of Knowledge for Solving Problems and Answering Questions In D.Klahr(ed.) Cognition and Instruction , Hillsdale, NJ: Erlbaum.

Hassell,D.J.(1987). Using ADEX Advisor as a Tool for Qualitative Modelling ,Proceedings of Prolog in Education (PEG) Conference.

Howe,J.A.M., O’Shea,T. and Plane,F. (1980). Teaching Mathematics Through Logo Programming: An evaluation study , in Computer-Assisted Learning: Scope Progress and Limits , R.Lewis and E.D.Tagg(eds). Amsterdam: North Holland, 1980.

Johanson,R.P. (1988). Computer, Cognition and Curriculum: Retrospect and Propect, J. of Educational Computing Research, Vol. 4 (1), pp. 1–29.

MathSciNet   Google Scholar  

Johnson,W.L. and Soloway, E. (1985). PROUST, Byte , 10 , 4, pp.179–190.

Klahr,D. and S.M.Carver (1988). Cognitive Objective in a LOGO Debugging Curriculum: Instruction, Learning and Transfer, Cognitive Psychology , 20, pp. 362–404.

Kowalski,R.(1987). Logic as a Computer Language for Children, in M.Yazdani(ed) New Horizons in Educational Computing , Ellis Horwood Ltd, Chichester, pp. 121–144.

Kurland,D.M. and Pea,R.D. (1985). Children’s Mental Models of Recursive Logo Programs, J. of Educational Computing Research , 1 : 2, 1985.

Lee,O. and Lehrer,P.(1988). Conjectures Concerning the Origins of Misconceptions in Logo, J. of Educational Computing Research , Vol. 4 (1), 1988, pp. 87–105.

Linn,M.C. (1985). The Cognitive Consequences of Programming Instruction in Classrooms, Educational Researcher , 14:5, pp. 14–16, 25–29.

Many,W.A., Lockard,J., Abrams,P.D. and Friker, W. (1988). The Effect of Learning to Program in Logo on Reasoning Skills of Junior High School Students, J. of Educational Computing Research , 4: 2, pp. 203–213

Mayer,RE. and Fay,A.L. (1987). A Chain of Cognitive Changes With Learning to Program in Logo, Journal of Educational Psychology , Vol. 79 (3), pp. 269–279.

Midoro,V., Persico,D. and Sarti,L. (1988). Prolog for Problem Solving, in P.Ercoli and R.Lewis(eds) Artificial Intelligence Tools in Education , Elsevier Science Publisher, pp. 145–161.

Miller, M.L. (1982). A Structured Planning and Debugging Environment for Elementary Programming, in D.Sleeman and J.S.Brown(eds.) Intelligent Tutoring Systems , Academic Press.

Nickerson,R.S. (1980). Computer Programming as a Vehicle for Teaching Thinking Skills, Thinking: The J. of Philosophy for Children , 4: 3, 4, pp. 42–48.

Orhun,E. (1988). Expert Systems in Education, in M.De Blasi, J.Donia, E.Luque and E.Scerri(Eds.) Education and Application of Computer Technology , Edizioni Fratelli Laterza, Bari.

Papert,S. (1980). Mindstorms : Children, Computers, and Powerful Ideas, Basic Books, Inc., New York

Patterson,J.H. and Smith,M.S. (1986). The Role of Computers in Higher-order Thinking , in Microcomputers and Education , J.A.Culberston and L.L.Cunningham(eds.), University of Chicago Press, Chicago, pp. 81–108.

Pea,R.D. and Kurland,D.M. (1984). On the Cognitive Effects of Learning Computer Programming: A Critical Look, New Ideas in Psychology , 2:2 , pp. 137–168.

Perkins,D.N., Hancock,C., Hobbs,R., Martin,F. and Simmons,R. (1988). Conditions of Learning in Novice Programmers, J. of Educational Computing Research , Vol. 2 (1), pp. 37–55.

Polya,G. (1957). How to Solve It , Princeton University Press, Princeton.

Reiser,B.J., M.Ranney, M.C.Lovett and D.Y.Kimberg(1988). Facilitating Students’ Reasoning with Causal Explanations and Visual Representations, in D.Bierman, J.Brueker and J.Sandberg(eds.) Artificial Intelligence and Educations , IOS ,Amsterdam.

Romiszowski,A.J. (1987). Expert System in Education and Training Instructional Media, Educational Technology , October, pp. 22–30.

Saurers,R. and Farrel,R. (1982). GRAPES User’s Manual. Dept. of Psychology , Carnegie-Mellon University.

Schafer,L. and Sprigle,J.E. (1988). Gender Differences in the Use of the Logo Programming Language, J. of Educational Computing Research , Vol. 4 (1), pp. 49–55.

Soloway,E. and K.Ehrlich (1984). Empirical Studies of Programming Knowledge, IEEE Transaction on Software Engineering , Se-10:5, pp.595–609, September.

Swan,K. (1989). The Teaching and Learning of Problem Solving through LOGO Programming, in D.Bierman, J.Breuker and J.Sandberg (eds), Artificial Intelligence and Education , 109, Amsterdam, pp. 281–290.

Taylor.J. (1987). A Study of Novices Programming in Prolog , Ph.D. thesis, Sussex University.

Thompson,A.D. and Wang,H.C. (1988). Effects of Logo Microworld on Student Ability to Transfer a Concept, J. of Educational Computing Research , Vol. 4 (3), pp. 335–34.

Tubb,G.W. (1988). Turbo Prolog Graphics As a Tool for Middle School Children to Learn the Constructs of Prolog , The Fifth Int. Conference on Technology and Education, Edinburgh, March. pp. 298–301.

Turner,S.V., and Land,M.L. (1988). Cognitive Effects of a Logo-Enriched Mathematics Program for Middle School Students, J. of Educational Computing Research , Vol. 5 (4), pp. 443–465.

Wideman,H.H. and R.D.Owston(1988). Student Development of an Expert System: A Case Study, J. of Computer Based Instruction , 15:3, pp.88–94.

Weir,D. (1982). Teaching Logic Programming: An Interactive Approach , M.Sc. Thesis, Dept. of Computing, Imperial College, London.

Download references

Author information

Authors and affiliations.

Department of Computer Engineering, Ege University, Bornova/Izmir, Turkey

Emrah Orhun

You can also search for this author in PubMed   Google Scholar

Editor information

Editors and affiliations.

Departments of Technology and Society and Applied Mathematics and Statistics, State University of New York at Stony Brook, 11794-2250, Stony Brook, NY, USA

David L. Ferguson

Rights and permissions

Reprints and permissions

Copyright information

© 1993 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper.

Orhun, E. (1993). Learning Problem Solving Through Computer Programming. In: Ferguson, D.L. (eds) Advanced Educational Technologies for Mathematics and Science. NATO ASI Series, vol 107. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-02938-1_12

Download citation

DOI : https://doi.org/10.1007/978-3-662-02938-1_12

Publisher Name : Springer, Berlin, Heidelberg

Print ISBN : 978-3-642-08152-1

Online ISBN : 978-3-662-02938-1

eBook Packages : Springer Book Archive

Share this paper

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

  • Publish with us

Policies and ethics

  • Find a journal
  • Track your research

For IEEE Members

Ieee spectrum, follow ieee spectrum, support ieee spectrum, enjoy more free content and benefits by creating an account, saving articles to read later requires an ieee spectrum account, the institute content is only available for members, downloading full pdf issues is exclusive for ieee members, downloading this e-book is exclusive for ieee members, access to spectrum 's digital edition is exclusive for ieee members, following topics is a feature exclusive for ieee members, adding your response to an article requires an ieee spectrum account, create an account to access more content and features on ieee spectrum , including the ability to save articles to read later, download spectrum collections, and participate in conversations with readers and editors. for more exclusive content and features, consider joining ieee ., join the world’s largest professional organization devoted to engineering and applied sciences and get access to all of spectrum’s articles, archives, pdf downloads, and other benefits. learn more →, join the world’s largest professional organization devoted to engineering and applied sciences and get access to this e-book plus all of ieee spectrum’s articles, archives, pdf downloads, and other benefits. learn more →, access thousands of articles — completely free, create an account and get exclusive content and features: save articles, download collections, and talk to tech insiders — all free for full access and benefits, join ieee as a paying member., ai copilots are changing how coding is taught, professors are shifting away from syntax and emphasizing higher-level skills.

Photo-illustration of a mini AI bot looking at a laptop atop a stock of books, sitting next to human hands on a laptop.

Generative AI is transforming the software development industry. AI-powered coding tools are assisting programmers in their workflows, while jobs in AI continue to increase. But the shift is also evident in academia—one of the major avenues through which the next generation of software engineers learn how to code.

Computer science students are embracing the technology, using generative AI to help them understand complex concepts, summarize complicated research papers, brainstorm ways to solve a problem, come up with new research directions, and, of course, learn how to code.

“Students are early adopters and have been actively testing these tools,” says Johnny Chang , a teaching assistant at Stanford University pursuing a master’s degree in computer science. He also founded the AI x Education conference in 2023, a virtual gathering of students and educators to discuss the impact of AI on education.

So as not to be left behind, educators are also experimenting with generative AI. But they’re grappling with techniques to adopt the technology while still ensuring students learn the foundations of computer science.

“It’s a difficult balancing act,” says Ooi Wei Tsang , an associate professor in the School of Computing at the National University of Singapore . “Given that large language models are evolving rapidly, we are still learning how to do this.”

Less Emphasis on Syntax, More on Problem Solving

The fundamentals and skills themselves are evolving. Most introductory computer science courses focus on code syntax and getting programs to run, and while knowing how to read and write code is still essential, testing and debugging—which aren’t commonly part of the syllabus—now need to be taught more explicitly.

“We’re seeing a little upping of that skill, where students are getting code snippets from generative AI that they need to test for correctness,” says Jeanna Matthews , a professor of computer science at Clarkson University in Potsdam, N.Y.

Another vital expertise is problem decomposition. “This is a skill to know early on because you need to break a large problem into smaller pieces that an LLM can solve,” says Leo Porter , an associate teaching professor of computer science at the University of California, San Diego . “It’s hard to find where in the curriculum that’s taught—maybe in an algorithms or software engineering class, but those are advanced classes. Now, it becomes a priority in introductory classes.”

“Given that large language models are evolving rapidly, we are still learning how to do this.” —Ooi Wei Tsang, National University of Singapore

As a result, educators are modifying their teaching strategies. “I used to have this singular focus on students writing code that they submit, and then I run test cases on the code to determine what their grade is,” says Daniel Zingaro , an associate professor of computer science at the University of Toronto Mississauga . “This is such a narrow view of what it means to be a software engineer, and I just felt that with generative AI, I’ve managed to overcome that restrictive view.”

Zingaro, who coauthored a book on AI-assisted Python programming with Porter, now has his students work in groups and submit a video explaining how their code works. Through these walk-throughs, he gets a sense of how students use AI to generate code, what they struggle with, and how they approach design, testing, and teamwork.

“It’s an opportunity for me to assess their learning process of the whole software development [life cycle]—not just code,” Zingaro says. “And I feel like my courses have opened up more and they’re much broader than they used to be. I can make students work on larger and more advanced projects.”

Ooi echoes that sentiment, noting that generative AI tools “will free up time for us to teach higher-level thinking—for example, how to design software, what is the right problem to solve, and what are the solutions. Students can spend more time on optimization, ethical issues, and the user-friendliness of a system rather than focusing on the syntax of the code.”

Avoiding AI’s Coding Pitfalls

But educators are cautious given an LLM’s tendency to hallucinate . “We need to be teaching students to be skeptical of the results and take ownership of verifying and validating them,” says Matthews.

Matthews adds that generative AI “can short-circuit the learning process of students relying on it too much.” Chang agrees that this overreliance can be a pitfall and advises his fellow students to explore possible solutions to problems by themselves so they don’t lose out on that critical thinking or effective learning process. “We should be making AI a copilot—not the autopilot—for learning,” he says.

“We should be making AI a copilot—not the autopilot—for learning.” —Johnny Chang, Stanford University

Other drawbacks include copyright and bias. “I teach my students about the ethical constraints—that this is a model built off other people’s code and we’d recognize the ownership of that,” Porter says. “We also have to recognize that models are going to represent the bias that’s already in society.”

Adapting to the rise of generative AI involves students and educators working together and learning from each other. For her colleagues, Matthews’s advice is to “try to foster an environment where you encourage students to tell you when and how they’re using these tools. Ultimately, we are preparing our students for the real world, and the real world is shifting, so sticking with what you’ve always done may not be the recipe that best serves students in this transition.”

Porter is optimistic that the changes they’re applying now will serve students well in the future. “There’s this long history of a gap between what we teach in academia and what’s actually needed as skills when students arrive in the industry,” he says. “There’s hope on my part that we might help close the gap if we embrace LLMs.”

  • How Coders Can Survive—and Thrive—in a ChatGPT World ›
  • AI Coding Is Going From Copilot to Autopilot ›
  • OpenAI Codex ›

Rina Diane Caballar is a writer covering tech and its intersections with science, society, and the environment. An IEEE Spectrum Contributing Editor, she's a former software engineer based in Wellington, New Zealand.

Bruce Benson

Yes! Great summary of how things are evolving with AI. I’m a retired coder (BS comp sci) and understand the fundamentals of developing systems. Learning the lastest systems is now the greatest challenge. I was intrigued by Ansible to help me manage my homelab cluster, but who wants to learn one more scripting language? Turns out ChatGPT4 knows the syntax, semantics, and work flow of Ansible and all I do is tell is to “install log2ram on all my proxmox servers” and I get a playbook that does just that. The same with Docker Compose scripts. Wow.

This Microcapacitor Charges 100 Million Times Faster Than Lithium-ion Batteries

This member gets a charge from promoting sustainability, u.s. fab capacity could triple in a decade, related stories, ai spam threatens the internet—ai can also protect it, what is generative ai, generative ai has a visual plagiarism problem.

IMAGES

  1. Download Problem Solving And Computer Programming Using C PDF Online 2020

    computer programming and problem solving pdf

  2. problem solving approach in programming

    computer programming and problem solving pdf

  3. Programming for Problem Solving

    computer programming and problem solving pdf

  4. Problem Solving and Programming Concepts, 8th Edition

    computer programming and problem solving pdf

  5. programming and problem solving pdf

    computer programming and problem solving pdf

  6. Problem Solving and Programming Concepts

    computer programming and problem solving pdf

VIDEO

  1. Introduction to Computer Programming

  2. Planning The Computer Programming/Problem Definition/Program Design

  3. F.Y.B.Sc.(C.S.)|Sem-I |CS-111: Problem Solving using Computer and C Programming

  4. 8. IOE OLD QUESTION DISCUSSION:INTRODUCTION TO COMPUTER PROGRAMMING & PROBLEM SOLVING USING COMPUTER

  5. Spring boot interview question and answer

  6. Python Wrangling PicoCTF Walkthrough

COMMENTS

  1. PDF Problem Solving Basics and Computer Programming

    Solving Problems with Solutions Requiring Sequential Processing Overview Computer programming is not just programming language syntax and using a development environment. At its core, computer programming is solving problems. We will now turn our attention to a structured methodology you can use to construct solutions for a given problem.

  2. PDF An Introduction to Computer Science and Problem Solving

    COMP1405/1005 - An Introduction to Computer Science and Problem Solving Fall 2011 - 4- There are also other types of programming languages such as functional programming languages and logic programming languages. According to the Tiobe index (i.e., a good site for ranking the popularity of programming languages), as of February 2011 the 10 most

  3. PDF Iˇ˝ˆ˘ ˝ ˘ˇ ˝˘ Pˆ˘ ˙ S˘ ˇ

    given by us to solve the problem. Thus, the success of a computer in solving a problem depends on how correctly and precisely we define the problem, design a solution (algorithm) and implement the solution (program) using a programming language. Thus, problem solving is the process of identifying a problem, developing an algorithm

  4. PDF Introduction to Computers and C++ Programming

    Programming 1.1 Computer Systems 2 Hardware 2 Software 7 High-Level Languages 8 Compilers 9 History Note 12 1.2 Programming and Problem-Solving 13 Algorithms 14 Program Design 15 Object-Oriented Programming 17 The Software Life Cycle 18 1.3 Introduction to C++ 19 Origins of the C++ Language 19 A Sample C++ Program 20 Pitfall: Using the Wrong ...

  5. PDF Programming Building Blocks

    a computer program is called software development. 2.1 The software engineering method for problem solving The software engineering method is a way to approach problem solving using a computer program and has the following five steps: 1. Specify the problem requirements. Describe the problem completely and unambiguously. 2. Analyze the problem ...

  6. PDF Algorithmic Problem Solving with Python

    cate is generally a far cry from the way computers "think" and communicate. Computer languages provide a way of bridging this gap. But, the gap between computers and humans is vast and, for those new to computer programming, these languages can often be tremendously challenging 1 3 1 3

  7. PDF Chapter 1 Overview of Programming and Problem Solving

    2 Chapter 1 Topics Computer Programming Programming Life-Cycle Phases Creating an Algorithm Machine Language vs. High Level Languages Compilation and Execution Processes C++ History Computer Components Computing Profession Ethics Problem-Solving Techniques

  8. PDF Introduction to Problem Solving in Computer Science CS 2104

    I -- Catalogue Description. This course introduces the student to a broad range of heuristics for solving problems in a range of settings that are relevant to computation. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems "in the small" (classical math and word problems ...

  9. PDF Computer Programming Problem Solving Process

    Computer Programming Problem Solving Process. Creativity and problem solving play a critical role in computer programming. It is important to apply a structured process to identify problems and generate creative solutions before a program can be developed. This handout will explain the process of approaching a problem and developing a solution ...

  10. PDF CS18000: Problem Solving And Object-Oriented Programming

    OO, or Object Oriented, programming refers to a set of activities that lead to a computer program, written in an object-oriented language, that when executed on a computer will solve a problem. Java is an OO language used in CS 180. Other OO languages include C++, C#, Delphi, Modula, Oberon, Objective C, Simula, Smalltalk, and many more!

  11. Programming and Problem Solving with C++

    Widely accepted as a model textbook for ACM/IEEE-recommended curricula for introductory computer science courses, Programming and Problem Solving with C++, Seventh Edition continues to reflect the authors' philosophy of guiding students through the content in an accessible and approachable way. It offers full coverage of all necessary content enabling the book to be used across two terms, and ...

  12. PDF CHAPTER 1 Overview of Programming and Problem Solving

    1 Knowledge Goals To understand what a computer program is. To understand what an algorithm is. To learn what a high-level programming language is. To understand the compilation and execution processes. To learn the history of the C++ language. To learn what the major components of a computer are and how they work together. To learn about some of the basic ethical issues confronting computing ...

  13. Java, Java, Java: Object-Oriented Problem Solving

    About the Book. We have designed this third edition of Java, Java, Java to be suitable for a typical Introduction to Computer Science (CS1) course or for a slightly more advanced Java as a Second Language course. This edition retains the "objects first" approach to programming and problem solving that was characteristic of the first two ...

  14. PDF Programming for Problem Solving

    PROGRAMMING FOR PROBLEM SOLVING - MRCET

  15. PDF Introduction to Problem Solving and Programming in Python

    Course Description. CIS 1051 introduces students to computers, computer programming, and problem solving using programs written in the Python language. Topics covered include the general characteristics of computers; techniques of problem solving and algorithm specifications; and the implementation, debugging, and testing of computer programs.

  16. PDF Computer Programming Problem Solving Process

    Example problem: Step 1 - Identify the problem that must be solved. The first step is to identify the problem that needs to be solved. In this example, the largest number in the list must be found and displayed. Step 2 - Understand what the problem presents. The problem presents a list of numbers.

  17. PDF Principles of Algorithmic Problem Solving

    research became a mind sport known as competitive programming. As a sport algorithmic problem solving rose in popularity with the largest competitions attracting tens of thousands of programmers. While its mathematical coun-terpart has a rich literature, there are only a few books on algorithms with a strong problem solving focus.

  18. Lecture 3: Problem Solving

    Please be advised that external sites may have terms and conditions, including license rights, that differ from ours. MIT OCW is not responsible for any content on third party sites, nor does a link suggest an endorsement of those sites and/or their content.

  19. PDF Introductory Problem Solving in Computer Science

    KEYWORDS: problem solving, programming, functional, imperative, cross-curricular, software engineering. 1. Introduction The original motivation behind this work was to develop material to assist a group of students in the first year of our Computer Science degree who were having difficulties across the course as a whole.

  20. PDF Java, Java, Java

    "objects first" approach to programming and problem solving that was characteristic of the first two editions. Throughout the text we emphasize careful coverage of Java language features, introductory programming concepts, and object-oriented design principles. The third edition retains many of the features of the first two editions ...

  21. PDF Programming for problem solving using C Notes Unit

    Programming for problem solving using C Notes Unit - I Computer History, Hardware, Software, Programming Languages and Algorithms: Components andfunctions of a Computer System, Concept of Hardware and Software Programming Languages: Low- level and High-level Languages, Program Design Tools: Algorithm, Flowchart, Pseudo code.

  22. Learning Problem Solving Through Computer Programming

    Abstract. Although strong claims have been made concerning the cognitive benefits of learning computer programming, research results are inconclusive. This paper studies the findings of the recent research trying to clarify the relationship between problem solving skills and learning to program. The scope of the study covers work done with Logo ...

  23. [PDF] Introductory programming, problem solving and computer assisted

    Introductory programming, problem solving and computer assisted assessment. The paper looks at the issues involved in problem design, the importance of presentation of the assessment and feedback, and student impressions of the exercise; results are compared with traditional paper based examinations. Expand.

  24. The Effects of Computer Programming on Problem-Solving Skills and

    Elementary students received programming instruction in Logo, while junior high students studied BASIC. Results indicated that computer programming alone was ineffective in teaching problem solving. However, when paired with systematic problem-solving instruction, learners demonstrated significant learning gains.

  25. AI Copilots Are Changing How Coding Is Taught

    Computer science students are embracing the technology, using generative AI to help them understand complex concepts, summarize complicated research papers, brainstorm ways to solve a problem ...

  26. Book not available

    Some alert ... ...