Bifalgorithm post · Computer science one · Draft Notice

Why does the book emphasize concepts, multiple languages, and problem solving?

Why does the book emphasize concepts, multiple languages, and problem solving? (Computer science one · Draft Notice) — "Another inspiration for the structure o…

Ideas in this flowchart

  • The book combines language-neutral Computer Science I problem solving with preparation for an increasingly automated world.
  • The book’s structure was inspired by an Honors Computer Science I course.
  • The course brought together Computer Science majors using Java and Computer Engineering students using C.
  • Both programming languages were taught in parallel.
  • Using two languages highlights fundamental differences and programming concepts.
  • The course emphasizes concepts because syntax and language-specific details are secondary.
  • A strong foundation in one language makes learning additional languages relatively easy.
  • The exercises come from years of teaching and are designed to work with any programming language.
  • The exercises focus mainly on mathematical problem solving, especially for engineering students.
  • Calculus can make some exercises easier to understand, but it is not required.
  • Computer Science I is fundamentally about human problem solving.
  • Computers automate human solutions on a large scale rather than solving problems independently.
  • Increasing automation may cause major social and economic change, including the loss of many jobs.
  • Programming and software development may become as essential as arithmetic.
  • The author hopes the book helps students prepare for this future and welcomes feedback from readers.
Feed/

Why does the book emphasize concepts, multiple languages, and problem solving?

No cover

Channel

Computer science one

1 page

"Another inspiration for the structure of this book is the Computer Science I Honors course that I developed. Usually Computer Science majors take CS1 using Java as the primary language while CE students take CS1 using C. Since the honors course consists of both majors (as well as some of the top students), I developed the Honors version to cover both languages at the same time in parallel. This has led to many interesting teaching moments: by covering two languages, it provides opportunities to highlight fundamental differences and concepts in programming languages. It also keeps concepts as the focus of the course emphasizing that syntax and idiosyncrasies of individual languages are only of secondary concern. Finally, actively using multiple languages in the first class provides a better opportunity to extend knowledge to other programming languages–once a student has a solid foundation in one language learning a new one should be relatively easy. The exercises in this book are a variety of exercises I’ve used in my courses over the years. They have been made as generic as possible so that they could be assigned using any language. While some have emphasized the use of “real-world” exercises (whatever that means), my exercises have focused more on solving problems of a mathematical nature (most of my students have been Engineering students). Some of them are more easily understood if students have had Calculus but it is not absolutely necessary. It may be cliché, but the two quotes above exemplify what I believe a Computer Science I course is about. The second is from Isaac Asimov who was asked at the 1964 World’s Fair what he though the world of 2014 would look like. His prediction didn’t become entirely true, but I do believe we are on the verge of a fundamental social change that will be caused by more and more automation. Like the industrial revolution, but on a much smaller time scale and to a far greater extent, automation will fundamentally change how we live and not work (I say “not work” because automation will very easily destroy the vast majority of today’s jobs–this represents a huge economic and political challenge that will need to be addressed). The time is quickly approaching where being able to program and develop software will be considered a fundamental skill as essential as arithmetic. I hope this book plays some small role in helping students adjust to that coming world. The first quote describes programming, or more fundamentally Computer Science and “problem solving.” Computers do not solve problems, humans do. Computers only make it possible to automate solutions on a large scale. At the end of the day, the human race is still responsible for tending the machines and will be for some time despite what Star Trek and the most optimistic of AI advocates think. I hope that people find this book useful. If value is a ratio of quality vs cost then this book has already succeeded in having infinite value. If you have suggestions on how to improve it, please feel free to contact me. If you end up using it and finding it useful, please let me know that too!"

Flowchart preview
👍
0
0 comments0 shares

Sign in to view and post comments.