Building on his highly successful textbook on C++, David Yevick provides a concise yet comprehensive one-stop course in three key programming languages, C++, Java and Octave (a freeware alternative to MATLAB). Employing only public-domain software, this book presents a unique overview of numerical and programming techniques, including object-oriented programming, elementary and advanced topics in numerical analysis, physical system modelling, scientific graphics, software engineering and performance issues. Compact, transparent code in all three programming languages is applied to the fundamental equations of quantum mechanics, electromagnetics, mechanics and statistical mechanics. Uncommented versions of the code that can be immediately modified and adapted are provided online for the more involved programs. This compact, practical text is an invaluable introduction for students in all undergraduate- and graduate-level courses in the physical sciences or engineering that require numerical modelling, and also a key reference for instructors and scientific programmers.
David Yevick is a Professor of Physics at the University of Waterloo. He has been engaged for 30 years in scientific programming in various fields of optical communications and solid state physics at numerous university and industrial establishments, where he performed pioneering work on the numerical modelling of optical communication devices and systems. Dr Yevick is currently a Fellow of the American Physical Society, the Institute of Electrical and Electronics Engineers and the Optical Society of America as well as a registered Professional Engineer (Ontario). He has taught scientific and engineering programming for over 20 years and has authored or co-authored over 170 refereed journal articles.
1. Introduction; 2. Octave programming; 3. Installing and running the Dev-C++ programming environment; 4. Introduction to computer and software architecture; 5. Fundamental concepts; 6. Procedural programming basics; 7. An introduction to object-oriented analysis; 8. C++ object-oriented programming syntax; 9. Arrays and matrices; 10. Input and output stream; 11. References; 12. Pointers and dynamic memory allocation; 13. Memory management; 14. The static keyword, multiple and virtual inheritance, templates and the STL library; 15. Creating a Java development environment; 16. Basic Java programming constructs; 17. Java classes and objects; 18. Advanced Java features; 19. Introductory numerical analysis; 20. Linear algebra; 21. Fourier transforms; 22. Differential equations; 23. Monte-Carlo methods; 24. Parabolic partial differential equation solvers; Index.