Skip to content

Latest commit

 

History

History
99 lines (64 loc) · 6.79 KB

contents.md

File metadata and controls

99 lines (64 loc) · 6.79 KB

Scientific Programming 101

Spring 2023/2024

General info {#general}

Welcome to this programming course! In the weeks ahead, you’ll use the Python programming language while learning to solve scientific problems from several fields of science. This course is intended for students who have no experience in programming at all.

Prerequisites {#prerequisites}

Scientific Programming 101 assumes no prior programming experience. If you have already done a course in Python, or if you have extensive experience in another programming language, this course might not be your best option—but we’re happy to refer you to other courses if you’d like!

Learning goals {#goals}

Scientific Programming 101 is a beginner's course. We will teach you the basics of Python programming as well as several different ways of solving computational problems. After this course, we envision that you:

  • can transform the description of a simple algorithm into working code by combining basic program elements;
  • can apply several scientific programming techniques from different areas of study;
  • can use a couple of libraries in your program and know how to find and read documentation on other libraries;
  • can make your programs simpler and easier to read by employing a few standard tactics;
  • can trace and fix several common programming errors.
  • can use native python data structures (like sets, dictionaries, and tuples);
  • analyze the complexity of an algorithm;
  • quickly learn to use new python packages and know how to find documentation for them;
  • import and analyze data;
  • create advanced plots.

Course materials {#materials}

All the reading and video material is available on this website. You do not need to purchase any books or software. Every module consists of short explanations (written and in the form of videos) and assignments. You do need to bring your own laptop.

Staff {#staff}

Simon Pauw

Contact: scientific@proglab.nl

Contact hours

Tutorials and lectures

Programming modules {#programming-modules}

You're going to learn programming through a number of programming modules. Each module consist of:

  • Theory: Explanations both written and in the form of video's.
  • Practice: Exercises to test your understanding of the theory.
  • Assignments: Bigger programming problems that require combining multiple programming concepts.

The modules are grouped into levels, you have to make one module per level. For some levels you have the choice between two different modules. When there is such a choice, you will learn the same programming concepts, but often in different thematic context (i.e. different scientific fields).

Here below is an overview of all modules.

ALGORITHMS. Learn to think like a computer. Things that we intuitively know how to do, like drawing a pyramid or computing change for a payment, is hard to get a computer to do right. In this module you’ll learn how to break down such intuitive problems into steps that even a computer can understand.

TEXT. Natural language processing is the science of making a computer understand (something about) natural human language. You will learn how you can get a computer to understand the sentiment of tweets. Is the tone of the tweet positive or negative?

BIG-DATA. In this module you will learn to work with data. You will, for example, analyze weather from the Netherlands and answer questions like: When was the first heat-wave? What was the longest freezing period?

MONOPOLY. When playing Monopoly, a starting player's advantage seems unfair. To verify, you could play many (millions) real games, but this would take way too much time. Instead, you'll write a computer simulation. This also allows you to experiment with game adjustments to make it fair. You're doing all this for a board game, but this simulation principle applies to various scientific fields (economy, chemistry, biology...).

SHAKESPEARE. What is an efficient algorithm? When you want to run large simulations, analyze large dataset, or any other computationally intensive task, writing efficient algorithms could in some cases mean the difference between a run time of a couple of minutes or of weeks. The theory of computational complexity gives you a way to reason about the efficiency of algorithms and make them run (much) faster.

SURVIVAL. Python is very popular for analyzing and processing data. And Pandas is an important reason why. Pandas is the most used Python package for handling data. You will learn how to use this package to analyze and visualize geographical data.

(BONUS) POPULATIONS. Predator-prey simulations are models used in ecology and computer science to study the dynamics between populations of predators and their prey within an ecosystem. What's particularly interesting about these simulations is how they can reveal emergent patterns and complex behaviors that arise from relatively simple rules. To make it easier to program such a simulation you will learn a programming technique called object oriented programming (OOP).

Grading {#grading}

The course's final result will be "pass" or "fail", which means that no grades are assigned. You pass by:

  • submitting sufficient coursework
  • passing the final exam

Acknowledgements {#acknowledgements}

This course has been designed by Simon Pauw, Martijn Stegeman, Wouter Vrielink, Tim Doolan and Ivo van Vulpen.

It is partially based on many great programming resources that have been published as Open Courseware under a Creative Commons license. The resulting work itself is also published under the Creative Commons License Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Feel free to re-use! If you would like to use the work commercially, please send an e-mail for arranging a license.

We have had lots of help from students as well as teaching assistants who tried the course or added ideas of their own. We especially thank:

  • Jelle van Assema (assignments and checkpy)
  • Roan van Blanken (checkpy tests)
  • Natasja Wezel (videos, revisions)
  • Iris Luden (video)
  • Marianne de Heer Kloots (revisions and testing)
  • Maarten Inja (DNA assignment)
  • Quinten Post (translations)
  • Marleen Rijksen (revisions)
  • Huub Rutjes (films)
  • Vera Schild (checkpy tests)
  • Luca Verhees (artwork “semester of code”)

We have used many programming recourses for inspiration: