preface broader set of topics and includes more examplesmore detailed discussions and explanationsand many more useful programming hints and tips highly recommend it as supplement to these notes for anyone with ambitions to become an expert scientific programmer the present book was written specifically for the course introduction to programming for scientific applications (in at the university of oslo it follows exactly the same teaching philosophy and general structure as langtangen' original bookwith the overarching idea that the only way to learn to program is to write programs reading theory is usefulbut without actual programming practicethe value is very limited the in course is therefore largely based on problem solving and programming exercisesand this book' main purpose is to prepare the students for such tasks by providing brief introduction to fundamental programming concepts and python tools the presentation style is compact and pragmaticand includes large number of code examples to illustrate how new concepts work and are applied in practice the examples are combination of pieces of code (so-called code snippets)complete python programsand interactive sessions in python shell readers are encouraged to run and modify the codes to gain feel for how the various programming concepts work source code for most of the examplesas well as jupyter notebooks for all the is provided in the online resources accompanying this book the typical reader of the book will be student of mathematicsphysicschemistryor other natural scienceand many of the examples will be familiar to these readers howeverthe rapidly increasing relevance of data science means that computations and scientific programming will be of interest to growing group of users no typical data science tools are presented in this bookbut the reader will learn tasks such as reading data from filessimple text processingand programming with mathematics and floating point computations these are all fundamental building blocks of any data science applicationand they are essential to know before diving into more advanced and specialized tools no prior knowledge of programming is needed to read this book we start with some very simple examples to get started with programming and then move on to introduce fundamental programming concepts such as loopsfunctionsif-testslistsand classes these generic concepts are supplemented by more specific and practical tools for scientific programmingprimarily plotting and array-based computations the book' overall purpose is to introduce the reader to programming andin particularto demonstrate how programming can be an extremely useful and powerful tool in many branches of the natural sciences many people have contributed to this bookin particular my colleagues at simula research laboratory and the university of oslo howeverthe contributions of professor hans petter langtangen stand head and shoulders above everyone else he has been an extremely inspiring teachermentorand colleague throughout my scientific careerhe developed the course that is now